diff options
| author | Miles Bader | 2004-12-25 02:00:25 +0000 |
|---|---|---|
| committer | Miles Bader | 2004-12-25 02:00:25 +0000 |
| commit | 6a89b7e95a771e5141bb1718e8278dcf892359ea (patch) | |
| tree | 189a864da85f49e73c6f9220b7231f0c54250e6e | |
| parent | 054b6b53c3554c83ae02d24a772a74b63ebb08cd (diff) | |
| parent | 70d16390a08dc9d94c961eb380be8e1b5b496963 (diff) | |
| download | emacs-6a89b7e95a771e5141bb1718e8278dcf892359ea.tar.gz emacs-6a89b7e95a771e5141bb1718e8278dcf892359ea.zip | |
Revision: miles@gnu.org--gnu-2004/emacs--unicode--0--patch-79
Merge from emacs--cvs-trunk--0
Patches applied:
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-735
- miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-747
Update from CVS
76 files changed, 2288 insertions, 1412 deletions
diff --git a/admin/FOR-RELEASE b/admin/FOR-RELEASE index ca0e16bdec9..e00c40b0871 100644 --- a/admin/FOR-RELEASE +++ b/admin/FOR-RELEASE | |||
| @@ -57,7 +57,7 @@ Trying 192.87.102.36... | |||
| 57 | Connected to ftp.nluug.nl. | 57 | Connected to ftp.nluug.nl. |
| 58 | 58 | ||
| 59 | Ange-ftp chokes on the `No route to host' message and doesn't look any | 59 | Ange-ftp chokes on the `No route to host' message and doesn't look any |
| 60 | further. | 60 | further. |
| 61 | 61 | ||
| 62 | I think in the near future we will see more of this problem, so it might be | 62 | I think in the near future we will see more of this problem, so it might be |
| 63 | time to make anfe-ftp more intelligent. | 63 | time to make anfe-ftp more intelligent. |
| @@ -112,6 +112,28 @@ we come to mark the http buffers as dead. | |||
| 112 | 112 | ||
| 113 | * REDISPLAY RELATED BUGS | 113 | * REDISPLAY RELATED BUGS |
| 114 | 114 | ||
| 115 | ** Strange text scrolling with Emacs + GTK | ||
| 116 | |||
| 117 | > I could reproduce the problem with the latest CVS. | ||
| 118 | > | ||
| 119 | > % emacs -Q | ||
| 120 | > M-x info RET | ||
| 121 | > M-> | ||
| 122 | > C-l | ||
| 123 | > C-x ( C-u - 1 C-v C-x ) | ||
| 124 | > C-x e e e e ... | ||
| 125 | > | ||
| 126 | > I see the problem around "CC mode" and "Forms". | ||
| 127 | |||
| 128 | It is not specific for the first line of a buffer. | ||
| 129 | |||
| 130 | Rather it happens for lines which are indented but the | ||
| 131 | indentation is controlled by a display property and | ||
| 132 | the newline is part of that display property -- in | ||
| 133 | that case, the indentation is not recognized for the | ||
| 134 | first display line. | ||
| 135 | |||
| 136 | |||
| 115 | ** Avoid unbreakable loops in redisplay. | 137 | ** Avoid unbreakable loops in redisplay. |
| 116 | 138 | ||
| 117 | Redisplay may loop if there is an error in some display property, e.g. | 139 | Redisplay may loop if there is an error in some display property, e.g. |
| @@ -984,7 +984,7 @@ esac | |||
| 984 | else | 984 | else |
| 985 | echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 | 985 | echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 |
| 986 | fi | 986 | fi |
| 987 | cd $ac_popdir | 987 | cd "$ac_popdir" |
| 988 | done | 988 | done |
| 989 | fi | 989 | fi |
| 990 | 990 | ||
| @@ -3250,8 +3250,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 3250 | cat conftest.err >&5 | 3250 | cat conftest.err >&5 |
| 3251 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 3251 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 3252 | (exit $ac_status); } && | 3252 | (exit $ac_status); } && |
| 3253 | { ac_try='test -z "$ac_c_werror_flag" | 3253 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 3254 | || test ! -s conftest.err' | ||
| 3255 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 3254 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 3256 | (eval $ac_try) 2>&5 | 3255 | (eval $ac_try) 2>&5 |
| 3257 | ac_status=$? | 3256 | ac_status=$? |
| @@ -3309,8 +3308,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 3309 | cat conftest.err >&5 | 3308 | cat conftest.err >&5 |
| 3310 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 3309 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 3311 | (exit $ac_status); } && | 3310 | (exit $ac_status); } && |
| 3312 | { ac_try='test -z "$ac_c_werror_flag" | 3311 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 3313 | || test ! -s conftest.err' | ||
| 3314 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 3312 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 3315 | (eval $ac_try) 2>&5 | 3313 | (eval $ac_try) 2>&5 |
| 3316 | ac_status=$? | 3314 | ac_status=$? |
| @@ -3426,8 +3424,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 3426 | cat conftest.err >&5 | 3424 | cat conftest.err >&5 |
| 3427 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 3425 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 3428 | (exit $ac_status); } && | 3426 | (exit $ac_status); } && |
| 3429 | { ac_try='test -z "$ac_c_werror_flag" | 3427 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 3430 | || test ! -s conftest.err' | ||
| 3431 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 3428 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 3432 | (eval $ac_try) 2>&5 | 3429 | (eval $ac_try) 2>&5 |
| 3433 | ac_status=$? | 3430 | ac_status=$? |
| @@ -3481,8 +3478,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 3481 | cat conftest.err >&5 | 3478 | cat conftest.err >&5 |
| 3482 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 3479 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 3483 | (exit $ac_status); } && | 3480 | (exit $ac_status); } && |
| 3484 | { ac_try='test -z "$ac_c_werror_flag" | 3481 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 3485 | || test ! -s conftest.err' | ||
| 3486 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 3482 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 3487 | (eval $ac_try) 2>&5 | 3483 | (eval $ac_try) 2>&5 |
| 3488 | ac_status=$? | 3484 | ac_status=$? |
| @@ -3527,8 +3523,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 3527 | cat conftest.err >&5 | 3523 | cat conftest.err >&5 |
| 3528 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 3524 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 3529 | (exit $ac_status); } && | 3525 | (exit $ac_status); } && |
| 3530 | { ac_try='test -z "$ac_c_werror_flag" | 3526 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 3531 | || test ! -s conftest.err' | ||
| 3532 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 3527 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 3533 | (eval $ac_try) 2>&5 | 3528 | (eval $ac_try) 2>&5 |
| 3534 | ac_status=$? | 3529 | ac_status=$? |
| @@ -3572,8 +3567,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 3572 | cat conftest.err >&5 | 3567 | cat conftest.err >&5 |
| 3573 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 3568 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 3574 | (exit $ac_status); } && | 3569 | (exit $ac_status); } && |
| 3575 | { ac_try='test -z "$ac_c_werror_flag" | 3570 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 3576 | || test ! -s conftest.err' | ||
| 3577 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 3571 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 3578 | (eval $ac_try) 2>&5 | 3572 | (eval $ac_try) 2>&5 |
| 3579 | ac_status=$? | 3573 | ac_status=$? |
| @@ -4206,8 +4200,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 4206 | cat conftest.err >&5 | 4200 | cat conftest.err >&5 |
| 4207 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 4201 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 4208 | (exit $ac_status); } && | 4202 | (exit $ac_status); } && |
| 4209 | { ac_try='test -z "$ac_c_werror_flag" | 4203 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 4210 | || test ! -s conftest.err' | ||
| 4211 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 4204 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 4212 | (eval $ac_try) 2>&5 | 4205 | (eval $ac_try) 2>&5 |
| 4213 | ac_status=$? | 4206 | ac_status=$? |
| @@ -4483,8 +4476,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 4483 | cat conftest.err >&5 | 4476 | cat conftest.err >&5 |
| 4484 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 4477 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 4485 | (exit $ac_status); } && | 4478 | (exit $ac_status); } && |
| 4486 | { ac_try='test -z "$ac_c_werror_flag" | 4479 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 4487 | || test ! -s conftest.err' | ||
| 4488 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 4480 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 4489 | (eval $ac_try) 2>&5 | 4481 | (eval $ac_try) 2>&5 |
| 4490 | ac_status=$? | 4482 | ac_status=$? |
| @@ -4513,8 +4505,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 4513 | cat conftest.err >&5 | 4505 | cat conftest.err >&5 |
| 4514 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 4506 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 4515 | (exit $ac_status); } && | 4507 | (exit $ac_status); } && |
| 4516 | { ac_try='test -z "$ac_c_werror_flag" | 4508 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 4517 | || test ! -s conftest.err' | ||
| 4518 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 4509 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 4519 | (eval $ac_try) 2>&5 | 4510 | (eval $ac_try) 2>&5 |
| 4520 | ac_status=$? | 4511 | ac_status=$? |
| @@ -4584,8 +4575,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 4584 | cat conftest.err >&5 | 4575 | cat conftest.err >&5 |
| 4585 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 4576 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 4586 | (exit $ac_status); } && | 4577 | (exit $ac_status); } && |
| 4587 | { ac_try='test -z "$ac_c_werror_flag" | 4578 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 4588 | || test ! -s conftest.err' | ||
| 4589 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 4579 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 4590 | (eval $ac_try) 2>&5 | 4580 | (eval $ac_try) 2>&5 |
| 4591 | ac_status=$? | 4581 | ac_status=$? |
| @@ -4637,8 +4627,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 4637 | cat conftest.err >&5 | 4627 | cat conftest.err >&5 |
| 4638 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 4628 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 4639 | (exit $ac_status); } && | 4629 | (exit $ac_status); } && |
| 4640 | { ac_try='test -z "$ac_c_werror_flag" | 4630 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 4641 | || test ! -s conftest.err' | ||
| 4642 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 4631 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 4643 | (eval $ac_try) 2>&5 | 4632 | (eval $ac_try) 2>&5 |
| 4644 | ac_status=$? | 4633 | ac_status=$? |
| @@ -4709,8 +4698,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 4709 | cat conftest.err >&5 | 4698 | cat conftest.err >&5 |
| 4710 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 4699 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 4711 | (exit $ac_status); } && | 4700 | (exit $ac_status); } && |
| 4712 | { ac_try='test -z "$ac_c_werror_flag" | 4701 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 4713 | || test ! -s conftest.err' | ||
| 4714 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 4702 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 4715 | (eval $ac_try) 2>&5 | 4703 | (eval $ac_try) 2>&5 |
| 4716 | ac_status=$? | 4704 | ac_status=$? |
| @@ -4762,8 +4750,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 4762 | cat conftest.err >&5 | 4750 | cat conftest.err >&5 |
| 4763 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 4751 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 4764 | (exit $ac_status); } && | 4752 | (exit $ac_status); } && |
| 4765 | { ac_try='test -z "$ac_c_werror_flag" | 4753 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 4766 | || test ! -s conftest.err' | ||
| 4767 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 4754 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 4768 | (eval $ac_try) 2>&5 | 4755 | (eval $ac_try) 2>&5 |
| 4769 | ac_status=$? | 4756 | ac_status=$? |
| @@ -4833,8 +4820,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 4833 | cat conftest.err >&5 | 4820 | cat conftest.err >&5 |
| 4834 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 4821 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 4835 | (exit $ac_status); } && | 4822 | (exit $ac_status); } && |
| 4836 | { ac_try='test -z "$ac_c_werror_flag" | 4823 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 4837 | || test ! -s conftest.err' | ||
| 4838 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 4824 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 4839 | (eval $ac_try) 2>&5 | 4825 | (eval $ac_try) 2>&5 |
| 4840 | ac_status=$? | 4826 | ac_status=$? |
| @@ -5004,8 +4990,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 5004 | cat conftest.err >&5 | 4990 | cat conftest.err >&5 |
| 5005 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 4991 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 5006 | (exit $ac_status); } && | 4992 | (exit $ac_status); } && |
| 5007 | { ac_try='test -z "$ac_c_werror_flag" | 4993 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 5008 | || test ! -s conftest.err' | ||
| 5009 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 4994 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 5010 | (eval $ac_try) 2>&5 | 4995 | (eval $ac_try) 2>&5 |
| 5011 | ac_status=$? | 4996 | ac_status=$? |
| @@ -5074,8 +5059,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 5074 | cat conftest.err >&5 | 5059 | cat conftest.err >&5 |
| 5075 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 5060 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 5076 | (exit $ac_status); } && | 5061 | (exit $ac_status); } && |
| 5077 | { ac_try='test -z "$ac_c_werror_flag" | 5062 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 5078 | || test ! -s conftest.err' | ||
| 5079 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 5063 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 5080 | (eval $ac_try) 2>&5 | 5064 | (eval $ac_try) 2>&5 |
| 5081 | ac_status=$? | 5065 | ac_status=$? |
| @@ -5229,8 +5213,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 5229 | cat conftest.err >&5 | 5213 | cat conftest.err >&5 |
| 5230 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 5214 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 5231 | (exit $ac_status); } && | 5215 | (exit $ac_status); } && |
| 5232 | { ac_try='test -z "$ac_c_werror_flag" | 5216 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 5233 | || test ! -s conftest.err' | ||
| 5234 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 5217 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 5235 | (eval $ac_try) 2>&5 | 5218 | (eval $ac_try) 2>&5 |
| 5236 | ac_status=$? | 5219 | ac_status=$? |
| @@ -5323,8 +5306,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 5323 | cat conftest.err >&5 | 5306 | cat conftest.err >&5 |
| 5324 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 5307 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 5325 | (exit $ac_status); } && | 5308 | (exit $ac_status); } && |
| 5326 | { ac_try='test -z "$ac_c_werror_flag" | 5309 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 5327 | || test ! -s conftest.err' | ||
| 5328 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 5310 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 5329 | (eval $ac_try) 2>&5 | 5311 | (eval $ac_try) 2>&5 |
| 5330 | ac_status=$? | 5312 | ac_status=$? |
| @@ -5466,8 +5448,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 5466 | cat conftest.err >&5 | 5448 | cat conftest.err >&5 |
| 5467 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 5449 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 5468 | (exit $ac_status); } && | 5450 | (exit $ac_status); } && |
| 5469 | { ac_try='test -z "$ac_c_werror_flag" | 5451 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 5470 | || test ! -s conftest.err' | ||
| 5471 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 5452 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 5472 | (eval $ac_try) 2>&5 | 5453 | (eval $ac_try) 2>&5 |
| 5473 | ac_status=$? | 5454 | ac_status=$? |
| @@ -5586,8 +5567,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 5586 | cat conftest.err >&5 | 5567 | cat conftest.err >&5 |
| 5587 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 5568 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 5588 | (exit $ac_status); } && | 5569 | (exit $ac_status); } && |
| 5589 | { ac_try='test -z "$ac_c_werror_flag" | 5570 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 5590 | || test ! -s conftest.err' | ||
| 5591 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 5571 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 5592 | (eval $ac_try) 2>&5 | 5572 | (eval $ac_try) 2>&5 |
| 5593 | ac_status=$? | 5573 | ac_status=$? |
| @@ -5752,8 +5732,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 5752 | cat conftest.err >&5 | 5732 | cat conftest.err >&5 |
| 5753 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 5733 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 5754 | (exit $ac_status); } && | 5734 | (exit $ac_status); } && |
| 5755 | { ac_try='test -z "$ac_c_werror_flag" | 5735 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 5756 | || test ! -s conftest.err' | ||
| 5757 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 5736 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 5758 | (eval $ac_try) 2>&5 | 5737 | (eval $ac_try) 2>&5 |
| 5759 | ac_status=$? | 5738 | ac_status=$? |
| @@ -5816,8 +5795,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 5816 | cat conftest.err >&5 | 5795 | cat conftest.err >&5 |
| 5817 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 5796 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 5818 | (exit $ac_status); } && | 5797 | (exit $ac_status); } && |
| 5819 | { ac_try='test -z "$ac_c_werror_flag" | 5798 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 5820 | || test ! -s conftest.err' | ||
| 5821 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 5799 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 5822 | (eval $ac_try) 2>&5 | 5800 | (eval $ac_try) 2>&5 |
| 5823 | ac_status=$? | 5801 | ac_status=$? |
| @@ -5890,8 +5868,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 5890 | cat conftest.err >&5 | 5868 | cat conftest.err >&5 |
| 5891 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 5869 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 5892 | (exit $ac_status); } && | 5870 | (exit $ac_status); } && |
| 5893 | { ac_try='test -z "$ac_c_werror_flag" | 5871 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 5894 | || test ! -s conftest.err' | ||
| 5895 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 5872 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 5896 | (eval $ac_try) 2>&5 | 5873 | (eval $ac_try) 2>&5 |
| 5897 | ac_status=$? | 5874 | ac_status=$? |
| @@ -5977,8 +5954,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 5977 | cat conftest.err >&5 | 5954 | cat conftest.err >&5 |
| 5978 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 5955 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 5979 | (exit $ac_status); } && | 5956 | (exit $ac_status); } && |
| 5980 | { ac_try='test -z "$ac_c_werror_flag" | 5957 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 5981 | || test ! -s conftest.err' | ||
| 5982 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 5958 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 5983 | (eval $ac_try) 2>&5 | 5959 | (eval $ac_try) 2>&5 |
| 5984 | ac_status=$? | 5960 | ac_status=$? |
| @@ -6051,8 +6027,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 6051 | cat conftest.err >&5 | 6027 | cat conftest.err >&5 |
| 6052 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 6028 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 6053 | (exit $ac_status); } && | 6029 | (exit $ac_status); } && |
| 6054 | { ac_try='test -z "$ac_c_werror_flag" | 6030 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 6055 | || test ! -s conftest.err' | ||
| 6056 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 6031 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 6057 | (eval $ac_try) 2>&5 | 6032 | (eval $ac_try) 2>&5 |
| 6058 | ac_status=$? | 6033 | ac_status=$? |
| @@ -6122,8 +6097,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 6122 | cat conftest.err >&5 | 6097 | cat conftest.err >&5 |
| 6123 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 6098 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 6124 | (exit $ac_status); } && | 6099 | (exit $ac_status); } && |
| 6125 | { ac_try='test -z "$ac_c_werror_flag" | 6100 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 6126 | || test ! -s conftest.err' | ||
| 6127 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 6101 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 6128 | (eval $ac_try) 2>&5 | 6102 | (eval $ac_try) 2>&5 |
| 6129 | ac_status=$? | 6103 | ac_status=$? |
| @@ -6182,8 +6156,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 6182 | cat conftest.err >&5 | 6156 | cat conftest.err >&5 |
| 6183 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 6157 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 6184 | (exit $ac_status); } && | 6158 | (exit $ac_status); } && |
| 6185 | { ac_try='test -z "$ac_c_werror_flag" | 6159 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 6186 | || test ! -s conftest.err' | ||
| 6187 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 6160 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 6188 | (eval $ac_try) 2>&5 | 6161 | (eval $ac_try) 2>&5 |
| 6189 | ac_status=$? | 6162 | ac_status=$? |
| @@ -6252,8 +6225,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 6252 | cat conftest.err >&5 | 6225 | cat conftest.err >&5 |
| 6253 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 6226 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 6254 | (exit $ac_status); } && | 6227 | (exit $ac_status); } && |
| 6255 | { ac_try='test -z "$ac_c_werror_flag" | 6228 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 6256 | || test ! -s conftest.err' | ||
| 6257 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 6229 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 6258 | (eval $ac_try) 2>&5 | 6230 | (eval $ac_try) 2>&5 |
| 6259 | ac_status=$? | 6231 | ac_status=$? |
| @@ -6314,8 +6286,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 6314 | cat conftest.err >&5 | 6286 | cat conftest.err >&5 |
| 6315 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 6287 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 6316 | (exit $ac_status); } && | 6288 | (exit $ac_status); } && |
| 6317 | { ac_try='test -z "$ac_c_werror_flag" | 6289 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 6318 | || test ! -s conftest.err' | ||
| 6319 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 6290 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 6320 | (eval $ac_try) 2>&5 | 6291 | (eval $ac_try) 2>&5 |
| 6321 | ac_status=$? | 6292 | ac_status=$? |
| @@ -6381,8 +6352,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 6381 | cat conftest.err >&5 | 6352 | cat conftest.err >&5 |
| 6382 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 6353 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 6383 | (exit $ac_status); } && | 6354 | (exit $ac_status); } && |
| 6384 | { ac_try='test -z "$ac_c_werror_flag" | 6355 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 6385 | || test ! -s conftest.err' | ||
| 6386 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 6356 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 6387 | (eval $ac_try) 2>&5 | 6357 | (eval $ac_try) 2>&5 |
| 6388 | ac_status=$? | 6358 | ac_status=$? |
| @@ -6528,8 +6498,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 6528 | cat conftest.err >&5 | 6498 | cat conftest.err >&5 |
| 6529 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 6499 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 6530 | (exit $ac_status); } && | 6500 | (exit $ac_status); } && |
| 6531 | { ac_try='test -z "$ac_c_werror_flag" | 6501 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 6532 | || test ! -s conftest.err' | ||
| 6533 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 6502 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 6534 | (eval $ac_try) 2>&5 | 6503 | (eval $ac_try) 2>&5 |
| 6535 | ac_status=$? | 6504 | ac_status=$? |
| @@ -6593,8 +6562,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 6593 | cat conftest.err >&5 | 6562 | cat conftest.err >&5 |
| 6594 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 6563 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 6595 | (exit $ac_status); } && | 6564 | (exit $ac_status); } && |
| 6596 | { ac_try='test -z "$ac_c_werror_flag" | 6565 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 6597 | || test ! -s conftest.err' | ||
| 6598 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 6566 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 6599 | (eval $ac_try) 2>&5 | 6567 | (eval $ac_try) 2>&5 |
| 6600 | ac_status=$? | 6568 | ac_status=$? |
| @@ -6659,8 +6627,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 6659 | cat conftest.err >&5 | 6627 | cat conftest.err >&5 |
| 6660 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 6628 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 6661 | (exit $ac_status); } && | 6629 | (exit $ac_status); } && |
| 6662 | { ac_try='test -z "$ac_c_werror_flag" | 6630 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 6663 | || test ! -s conftest.err' | ||
| 6664 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 6631 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 6665 | (eval $ac_try) 2>&5 | 6632 | (eval $ac_try) 2>&5 |
| 6666 | ac_status=$? | 6633 | ac_status=$? |
| @@ -6706,8 +6673,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 6706 | cat conftest.err >&5 | 6673 | cat conftest.err >&5 |
| 6707 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 6674 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 6708 | (exit $ac_status); } && | 6675 | (exit $ac_status); } && |
| 6709 | { ac_try='test -z "$ac_c_werror_flag" | 6676 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 6710 | || test ! -s conftest.err' | ||
| 6711 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 6677 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 6712 | (eval $ac_try) 2>&5 | 6678 | (eval $ac_try) 2>&5 |
| 6713 | ac_status=$? | 6679 | ac_status=$? |
| @@ -6781,8 +6747,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 6781 | cat conftest.err >&5 | 6747 | cat conftest.err >&5 |
| 6782 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 6748 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 6783 | (exit $ac_status); } && | 6749 | (exit $ac_status); } && |
| 6784 | { ac_try='test -z "$ac_c_werror_flag" | 6750 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 6785 | || test ! -s conftest.err' | ||
| 6786 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 6751 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 6787 | (eval $ac_try) 2>&5 | 6752 | (eval $ac_try) 2>&5 |
| 6788 | ac_status=$? | 6753 | ac_status=$? |
| @@ -6847,8 +6812,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 6847 | cat conftest.err >&5 | 6812 | cat conftest.err >&5 |
| 6848 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 6813 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 6849 | (exit $ac_status); } && | 6814 | (exit $ac_status); } && |
| 6850 | { ac_try='test -z "$ac_c_werror_flag" | 6815 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 6851 | || test ! -s conftest.err' | ||
| 6852 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 6816 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 6853 | (eval $ac_try) 2>&5 | 6817 | (eval $ac_try) 2>&5 |
| 6854 | ac_status=$? | 6818 | ac_status=$? |
| @@ -6892,8 +6856,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 6892 | cat conftest.err >&5 | 6856 | cat conftest.err >&5 |
| 6893 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 6857 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 6894 | (exit $ac_status); } && | 6858 | (exit $ac_status); } && |
| 6895 | { ac_try='test -z "$ac_c_werror_flag" | 6859 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 6896 | || test ! -s conftest.err' | ||
| 6897 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 6860 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 6898 | (eval $ac_try) 2>&5 | 6861 | (eval $ac_try) 2>&5 |
| 6899 | ac_status=$? | 6862 | ac_status=$? |
| @@ -6964,8 +6927,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 6964 | cat conftest.err >&5 | 6927 | cat conftest.err >&5 |
| 6965 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 6928 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 6966 | (exit $ac_status); } && | 6929 | (exit $ac_status); } && |
| 6967 | { ac_try='test -z "$ac_c_werror_flag" | 6930 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 6968 | || test ! -s conftest.err' | ||
| 6969 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 6931 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 6970 | (eval $ac_try) 2>&5 | 6932 | (eval $ac_try) 2>&5 |
| 6971 | ac_status=$? | 6933 | ac_status=$? |
| @@ -7015,8 +6977,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 7015 | cat conftest.err >&5 | 6977 | cat conftest.err >&5 |
| 7016 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 6978 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 7017 | (exit $ac_status); } && | 6979 | (exit $ac_status); } && |
| 7018 | { ac_try='test -z "$ac_c_werror_flag" | 6980 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 7019 | || test ! -s conftest.err' | ||
| 7020 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 6981 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 7021 | (eval $ac_try) 2>&5 | 6982 | (eval $ac_try) 2>&5 |
| 7022 | ac_status=$? | 6983 | ac_status=$? |
| @@ -7087,8 +7048,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 7087 | cat conftest.err >&5 | 7048 | cat conftest.err >&5 |
| 7088 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 7049 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 7089 | (exit $ac_status); } && | 7050 | (exit $ac_status); } && |
| 7090 | { ac_try='test -z "$ac_c_werror_flag" | 7051 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 7091 | || test ! -s conftest.err' | ||
| 7092 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 7052 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 7093 | (eval $ac_try) 2>&5 | 7053 | (eval $ac_try) 2>&5 |
| 7094 | ac_status=$? | 7054 | ac_status=$? |
| @@ -7138,8 +7098,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 7138 | cat conftest.err >&5 | 7098 | cat conftest.err >&5 |
| 7139 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 7099 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 7140 | (exit $ac_status); } && | 7100 | (exit $ac_status); } && |
| 7141 | { ac_try='test -z "$ac_c_werror_flag" | 7101 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 7142 | || test ! -s conftest.err' | ||
| 7143 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 7102 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 7144 | (eval $ac_try) 2>&5 | 7103 | (eval $ac_try) 2>&5 |
| 7145 | ac_status=$? | 7104 | ac_status=$? |
| @@ -7210,8 +7169,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 7210 | cat conftest.err >&5 | 7169 | cat conftest.err >&5 |
| 7211 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 7170 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 7212 | (exit $ac_status); } && | 7171 | (exit $ac_status); } && |
| 7213 | { ac_try='test -z "$ac_c_werror_flag" | 7172 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 7214 | || test ! -s conftest.err' | ||
| 7215 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 7173 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 7216 | (eval $ac_try) 2>&5 | 7174 | (eval $ac_try) 2>&5 |
| 7217 | ac_status=$? | 7175 | ac_status=$? |
| @@ -7261,8 +7219,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 7261 | cat conftest.err >&5 | 7219 | cat conftest.err >&5 |
| 7262 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 7220 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 7263 | (exit $ac_status); } && | 7221 | (exit $ac_status); } && |
| 7264 | { ac_try='test -z "$ac_c_werror_flag" | 7222 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 7265 | || test ! -s conftest.err' | ||
| 7266 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 7223 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 7267 | (eval $ac_try) 2>&5 | 7224 | (eval $ac_try) 2>&5 |
| 7268 | ac_status=$? | 7225 | ac_status=$? |
| @@ -7333,8 +7290,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 7333 | cat conftest.err >&5 | 7290 | cat conftest.err >&5 |
| 7334 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 7291 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 7335 | (exit $ac_status); } && | 7292 | (exit $ac_status); } && |
| 7336 | { ac_try='test -z "$ac_c_werror_flag" | 7293 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 7337 | || test ! -s conftest.err' | ||
| 7338 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 7294 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 7339 | (eval $ac_try) 2>&5 | 7295 | (eval $ac_try) 2>&5 |
| 7340 | ac_status=$? | 7296 | ac_status=$? |
| @@ -7384,8 +7340,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 7384 | cat conftest.err >&5 | 7340 | cat conftest.err >&5 |
| 7385 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 7341 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 7386 | (exit $ac_status); } && | 7342 | (exit $ac_status); } && |
| 7387 | { ac_try='test -z "$ac_c_werror_flag" | 7343 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 7388 | || test ! -s conftest.err' | ||
| 7389 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 7344 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 7390 | (eval $ac_try) 2>&5 | 7345 | (eval $ac_try) 2>&5 |
| 7391 | ac_status=$? | 7346 | ac_status=$? |
| @@ -7456,8 +7411,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 7456 | cat conftest.err >&5 | 7411 | cat conftest.err >&5 |
| 7457 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 7412 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 7458 | (exit $ac_status); } && | 7413 | (exit $ac_status); } && |
| 7459 | { ac_try='test -z "$ac_c_werror_flag" | 7414 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 7460 | || test ! -s conftest.err' | ||
| 7461 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 7415 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 7462 | (eval $ac_try) 2>&5 | 7416 | (eval $ac_try) 2>&5 |
| 7463 | ac_status=$? | 7417 | ac_status=$? |
| @@ -7507,8 +7461,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 7507 | cat conftest.err >&5 | 7461 | cat conftest.err >&5 |
| 7508 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 7462 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 7509 | (exit $ac_status); } && | 7463 | (exit $ac_status); } && |
| 7510 | { ac_try='test -z "$ac_c_werror_flag" | 7464 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 7511 | || test ! -s conftest.err' | ||
| 7512 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 7465 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 7513 | (eval $ac_try) 2>&5 | 7466 | (eval $ac_try) 2>&5 |
| 7514 | ac_status=$? | 7467 | ac_status=$? |
| @@ -7595,8 +7548,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 7595 | cat conftest.err >&5 | 7548 | cat conftest.err >&5 |
| 7596 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 7549 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 7597 | (exit $ac_status); } && | 7550 | (exit $ac_status); } && |
| 7598 | { ac_try='test -z "$ac_c_werror_flag" | 7551 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 7599 | || test ! -s conftest.err' | ||
| 7600 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 7552 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 7601 | (eval $ac_try) 2>&5 | 7553 | (eval $ac_try) 2>&5 |
| 7602 | ac_status=$? | 7554 | ac_status=$? |
| @@ -7702,8 +7654,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 7702 | cat conftest.err >&5 | 7654 | cat conftest.err >&5 |
| 7703 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 7655 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 7704 | (exit $ac_status); } && | 7656 | (exit $ac_status); } && |
| 7705 | { ac_try='test -z "$ac_c_werror_flag" | 7657 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 7706 | || test ! -s conftest.err' | ||
| 7707 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 7658 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 7708 | (eval $ac_try) 2>&5 | 7659 | (eval $ac_try) 2>&5 |
| 7709 | ac_status=$? | 7660 | ac_status=$? |
| @@ -7763,8 +7714,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 7763 | cat conftest.err >&5 | 7714 | cat conftest.err >&5 |
| 7764 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 7715 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 7765 | (exit $ac_status); } && | 7716 | (exit $ac_status); } && |
| 7766 | { ac_try='test -z "$ac_c_werror_flag" | 7717 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 7767 | || test ! -s conftest.err' | ||
| 7768 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 7718 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 7769 | (eval $ac_try) 2>&5 | 7719 | (eval $ac_try) 2>&5 |
| 7770 | ac_status=$? | 7720 | ac_status=$? |
| @@ -7888,6 +7838,7 @@ fi | |||
| 7888 | echo "$as_me:$LINENO: checking for X" >&5 | 7838 | echo "$as_me:$LINENO: checking for X" >&5 |
| 7889 | echo $ECHO_N "checking for X... $ECHO_C" >&6 | 7839 | echo $ECHO_N "checking for X... $ECHO_C" >&6 |
| 7890 | 7840 | ||
| 7841 | ac_path_x_has_been_run=yes | ||
| 7891 | 7842 | ||
| 7892 | # Check whether --with-x or --without-x was given. | 7843 | # Check whether --with-x or --without-x was given. |
| 7893 | if test "${with_x+set}" = set; then | 7844 | if test "${with_x+set}" = set; then |
| @@ -7980,7 +7931,7 @@ ac_x_header_dirs=' | |||
| 7980 | /usr/openwin/share/include' | 7931 | /usr/openwin/share/include' |
| 7981 | 7932 | ||
| 7982 | if test "$ac_x_includes" = no; then | 7933 | if test "$ac_x_includes" = no; then |
| 7983 | # Guess where to find include files, by looking for Intrinsic.h. | 7934 | # Guess where to find include files, by looking for a specified header file. |
| 7984 | # First, try using that file with no special directory specified. | 7935 | # First, try using that file with no special directory specified. |
| 7985 | cat >conftest.$ac_ext <<_ACEOF | 7936 | cat >conftest.$ac_ext <<_ACEOF |
| 7986 | /* confdefs.h. */ | 7937 | /* confdefs.h. */ |
| @@ -8054,8 +8005,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 8054 | cat conftest.err >&5 | 8005 | cat conftest.err >&5 |
| 8055 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 8006 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 8056 | (exit $ac_status); } && | 8007 | (exit $ac_status); } && |
| 8057 | { ac_try='test -z "$ac_c_werror_flag" | 8008 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 8058 | || test ! -s conftest.err' | ||
| 8059 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 8009 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 8060 | (eval $ac_try) 2>&5 | 8010 | (eval $ac_try) 2>&5 |
| 8061 | ac_status=$? | 8011 | ac_status=$? |
| @@ -8115,8 +8065,12 @@ else | |||
| 8115 | # Update the cache value to reflect the command line values. | 8065 | # Update the cache value to reflect the command line values. |
| 8116 | ac_cv_have_x="have_x=yes \ | 8066 | ac_cv_have_x="have_x=yes \ |
| 8117 | ac_x_includes=$x_includes ac_x_libraries=$x_libraries" | 8067 | ac_x_includes=$x_includes ac_x_libraries=$x_libraries" |
| 8118 | echo "$as_me:$LINENO: result: libraries $x_libraries, headers $x_includes" >&5 | 8068 | # It might be that x_includes is empty (headers are found in the |
| 8119 | echo "${ECHO_T}libraries $x_libraries, headers $x_includes" >&6 | 8069 | # standard search path. Then output the corresponding message |
| 8070 | ac_out_x_includes=$x_includes | ||
| 8071 | test "x$x_includes" = x && ac_out_x_includes="in standard search path" | ||
| 8072 | echo "$as_me:$LINENO: result: libraries $x_libraries, headers $ac_out_x_includes" >&5 | ||
| 8073 | echo "${ECHO_T}libraries $x_libraries, headers $ac_out_x_includes" >&6 | ||
| 8120 | fi | 8074 | fi |
| 8121 | 8075 | ||
| 8122 | if test "$no_x" = yes; then | 8076 | if test "$no_x" = yes; then |
| @@ -8280,8 +8234,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 8280 | cat conftest.err >&5 | 8234 | cat conftest.err >&5 |
| 8281 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 8235 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 8282 | (exit $ac_status); } && | 8236 | (exit $ac_status); } && |
| 8283 | { ac_try='test -z "$ac_c_werror_flag" | 8237 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 8284 | || test ! -s conftest.err' | ||
| 8285 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 8238 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 8286 | (eval $ac_try) 2>&5 | 8239 | (eval $ac_try) 2>&5 |
| 8287 | ac_status=$? | 8240 | ac_status=$? |
| @@ -8376,8 +8329,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 8376 | cat conftest.err >&5 | 8329 | cat conftest.err >&5 |
| 8377 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 8330 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 8378 | (exit $ac_status); } && | 8331 | (exit $ac_status); } && |
| 8379 | { ac_try='test -z "$ac_c_werror_flag" | 8332 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 8380 | || test ! -s conftest.err' | ||
| 8381 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 8333 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 8382 | (eval $ac_try) 2>&5 | 8334 | (eval $ac_try) 2>&5 |
| 8383 | ac_status=$? | 8335 | ac_status=$? |
| @@ -8436,8 +8388,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 8436 | cat conftest.err >&5 | 8388 | cat conftest.err >&5 |
| 8437 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 8389 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 8438 | (exit $ac_status); } && | 8390 | (exit $ac_status); } && |
| 8439 | { ac_try='test -z "$ac_c_werror_flag" | 8391 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 8440 | || test ! -s conftest.err' | ||
| 8441 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 8392 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 8442 | (eval $ac_try) 2>&5 | 8393 | (eval $ac_try) 2>&5 |
| 8443 | ac_status=$? | 8394 | ac_status=$? |
| @@ -8521,8 +8472,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 8521 | cat conftest.err >&5 | 8472 | cat conftest.err >&5 |
| 8522 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 8473 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 8523 | (exit $ac_status); } && | 8474 | (exit $ac_status); } && |
| 8524 | { ac_try='test -z "$ac_c_werror_flag" | 8475 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 8525 | || test ! -s conftest.err' | ||
| 8526 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 8476 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 8527 | (eval $ac_try) 2>&5 | 8477 | (eval $ac_try) 2>&5 |
| 8528 | ac_status=$? | 8478 | ac_status=$? |
| @@ -8706,8 +8656,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 8706 | cat conftest.err >&5 | 8656 | cat conftest.err >&5 |
| 8707 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 8657 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 8708 | (exit $ac_status); } && | 8658 | (exit $ac_status); } && |
| 8709 | { ac_try='test -z "$ac_c_werror_flag" | 8659 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 8710 | || test ! -s conftest.err' | ||
| 8711 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 8660 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 8712 | (eval $ac_try) 2>&5 | 8661 | (eval $ac_try) 2>&5 |
| 8713 | ac_status=$? | 8662 | ac_status=$? |
| @@ -8959,8 +8908,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 8959 | cat conftest.err >&5 | 8908 | cat conftest.err >&5 |
| 8960 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 8909 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 8961 | (exit $ac_status); } && | 8910 | (exit $ac_status); } && |
| 8962 | { ac_try='test -z "$ac_c_werror_flag" | 8911 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 8963 | || test ! -s conftest.err' | ||
| 8964 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 8912 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 8965 | (eval $ac_try) 2>&5 | 8913 | (eval $ac_try) 2>&5 |
| 8966 | ac_status=$? | 8914 | ac_status=$? |
| @@ -9027,8 +8975,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 9027 | cat conftest.err >&5 | 8975 | cat conftest.err >&5 |
| 9028 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 8976 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 9029 | (exit $ac_status); } && | 8977 | (exit $ac_status); } && |
| 9030 | { ac_try='test -z "$ac_c_werror_flag" | 8978 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 9031 | || test ! -s conftest.err' | ||
| 9032 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 8979 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 9033 | (eval $ac_try) 2>&5 | 8980 | (eval $ac_try) 2>&5 |
| 9034 | ac_status=$? | 8981 | ac_status=$? |
| @@ -9097,8 +9044,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 9097 | cat conftest.err >&5 | 9044 | cat conftest.err >&5 |
| 9098 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 9045 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 9099 | (exit $ac_status); } && | 9046 | (exit $ac_status); } && |
| 9100 | { ac_try='test -z "$ac_c_werror_flag" | 9047 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 9101 | || test ! -s conftest.err' | ||
| 9102 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 9048 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 9103 | (eval $ac_try) 2>&5 | 9049 | (eval $ac_try) 2>&5 |
| 9104 | ac_status=$? | 9050 | ac_status=$? |
| @@ -9183,8 +9129,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 9183 | cat conftest.err >&5 | 9129 | cat conftest.err >&5 |
| 9184 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 9130 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 9185 | (exit $ac_status); } && | 9131 | (exit $ac_status); } && |
| 9186 | { ac_try='test -z "$ac_c_werror_flag" | 9132 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 9187 | || test ! -s conftest.err' | ||
| 9188 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 9133 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 9189 | (eval $ac_try) 2>&5 | 9134 | (eval $ac_try) 2>&5 |
| 9190 | ac_status=$? | 9135 | ac_status=$? |
| @@ -9261,8 +9206,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 9261 | cat conftest.err >&5 | 9206 | cat conftest.err >&5 |
| 9262 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 9207 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 9263 | (exit $ac_status); } && | 9208 | (exit $ac_status); } && |
| 9264 | { ac_try='test -z "$ac_c_werror_flag" | 9209 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 9265 | || test ! -s conftest.err' | ||
| 9266 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 9210 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 9267 | (eval $ac_try) 2>&5 | 9211 | (eval $ac_try) 2>&5 |
| 9268 | ac_status=$? | 9212 | ac_status=$? |
| @@ -9316,8 +9260,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 9316 | cat conftest.err >&5 | 9260 | cat conftest.err >&5 |
| 9317 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 9261 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 9318 | (exit $ac_status); } && | 9262 | (exit $ac_status); } && |
| 9319 | { ac_try='test -z "$ac_c_werror_flag" | 9263 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 9320 | || test ! -s conftest.err' | ||
| 9321 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 9264 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 9322 | (eval $ac_try) 2>&5 | 9265 | (eval $ac_try) 2>&5 |
| 9323 | ac_status=$? | 9266 | ac_status=$? |
| @@ -9386,8 +9329,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 9386 | cat conftest.err >&5 | 9329 | cat conftest.err >&5 |
| 9387 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 9330 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 9388 | (exit $ac_status); } && | 9331 | (exit $ac_status); } && |
| 9389 | { ac_try='test -z "$ac_c_werror_flag" | 9332 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 9390 | || test ! -s conftest.err' | ||
| 9391 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 9333 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 9392 | (eval $ac_try) 2>&5 | 9334 | (eval $ac_try) 2>&5 |
| 9393 | ac_status=$? | 9335 | ac_status=$? |
| @@ -9491,8 +9433,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 9491 | cat conftest.err >&5 | 9433 | cat conftest.err >&5 |
| 9492 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 9434 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 9493 | (exit $ac_status); } && | 9435 | (exit $ac_status); } && |
| 9494 | { ac_try='test -z "$ac_c_werror_flag" | 9436 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 9495 | || test ! -s conftest.err' | ||
| 9496 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 9437 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 9497 | (eval $ac_try) 2>&5 | 9438 | (eval $ac_try) 2>&5 |
| 9498 | ac_status=$? | 9439 | ac_status=$? |
| @@ -9559,8 +9500,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 9559 | cat conftest.err >&5 | 9500 | cat conftest.err >&5 |
| 9560 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 9501 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 9561 | (exit $ac_status); } && | 9502 | (exit $ac_status); } && |
| 9562 | { ac_try='test -z "$ac_c_werror_flag" | 9503 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 9563 | || test ! -s conftest.err' | ||
| 9564 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 9504 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 9565 | (eval $ac_try) 2>&5 | 9505 | (eval $ac_try) 2>&5 |
| 9566 | ac_status=$? | 9506 | ac_status=$? |
| @@ -9630,8 +9570,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 9630 | cat conftest.err >&5 | 9570 | cat conftest.err >&5 |
| 9631 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 9571 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 9632 | (exit $ac_status); } && | 9572 | (exit $ac_status); } && |
| 9633 | { ac_try='test -z "$ac_c_werror_flag" | 9573 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 9634 | || test ! -s conftest.err' | ||
| 9635 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 9574 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 9636 | (eval $ac_try) 2>&5 | 9575 | (eval $ac_try) 2>&5 |
| 9637 | ac_status=$? | 9576 | ac_status=$? |
| @@ -9871,8 +9810,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 9871 | cat conftest.err >&5 | 9810 | cat conftest.err >&5 |
| 9872 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 9811 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 9873 | (exit $ac_status); } && | 9812 | (exit $ac_status); } && |
| 9874 | { ac_try='test -z "$ac_c_werror_flag" | 9813 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 9875 | || test ! -s conftest.err' | ||
| 9876 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 9814 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 9877 | (eval $ac_try) 2>&5 | 9815 | (eval $ac_try) 2>&5 |
| 9878 | ac_status=$? | 9816 | ac_status=$? |
| @@ -10394,8 +10332,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 10394 | cat conftest.err >&5 | 10332 | cat conftest.err >&5 |
| 10395 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 10333 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 10396 | (exit $ac_status); } && | 10334 | (exit $ac_status); } && |
| 10397 | { ac_try='test -z "$ac_c_werror_flag" | 10335 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 10398 | || test ! -s conftest.err' | ||
| 10399 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 10336 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 10400 | (eval $ac_try) 2>&5 | 10337 | (eval $ac_try) 2>&5 |
| 10401 | ac_status=$? | 10338 | ac_status=$? |
| @@ -10467,8 +10404,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 10467 | cat conftest.err >&5 | 10404 | cat conftest.err >&5 |
| 10468 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 10405 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 10469 | (exit $ac_status); } && | 10406 | (exit $ac_status); } && |
| 10470 | { ac_try='test -z "$ac_c_werror_flag" | 10407 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 10471 | || test ! -s conftest.err' | ||
| 10472 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 10408 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 10473 | (eval $ac_try) 2>&5 | 10409 | (eval $ac_try) 2>&5 |
| 10474 | ac_status=$? | 10410 | ac_status=$? |
| @@ -10550,8 +10486,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 10550 | cat conftest.err >&5 | 10486 | cat conftest.err >&5 |
| 10551 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 10487 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 10552 | (exit $ac_status); } && | 10488 | (exit $ac_status); } && |
| 10553 | { ac_try='test -z "$ac_c_werror_flag" | 10489 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 10554 | || test ! -s conftest.err' | ||
| 10555 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 10490 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 10556 | (eval $ac_try) 2>&5 | 10491 | (eval $ac_try) 2>&5 |
| 10557 | ac_status=$? | 10492 | ac_status=$? |
| @@ -10630,8 +10565,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 10630 | cat conftest.err >&5 | 10565 | cat conftest.err >&5 |
| 10631 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 10566 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 10632 | (exit $ac_status); } && | 10567 | (exit $ac_status); } && |
| 10633 | { ac_try='test -z "$ac_c_werror_flag" | 10568 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 10634 | || test ! -s conftest.err' | ||
| 10635 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 10569 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 10636 | (eval $ac_try) 2>&5 | 10570 | (eval $ac_try) 2>&5 |
| 10637 | ac_status=$? | 10571 | ac_status=$? |
| @@ -10705,8 +10639,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 10705 | cat conftest.err >&5 | 10639 | cat conftest.err >&5 |
| 10706 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 10640 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 10707 | (exit $ac_status); } && | 10641 | (exit $ac_status); } && |
| 10708 | { ac_try='test -z "$ac_c_werror_flag" | 10642 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 10709 | || test ! -s conftest.err' | ||
| 10710 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 10643 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 10711 | (eval $ac_try) 2>&5 | 10644 | (eval $ac_try) 2>&5 |
| 10712 | ac_status=$? | 10645 | ac_status=$? |
| @@ -10774,8 +10707,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 10774 | cat conftest.err >&5 | 10707 | cat conftest.err >&5 |
| 10775 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 10708 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 10776 | (exit $ac_status); } && | 10709 | (exit $ac_status); } && |
| 10777 | { ac_try='test -z "$ac_c_werror_flag" | 10710 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 10778 | || test ! -s conftest.err' | ||
| 10779 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 10711 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 10780 | (eval $ac_try) 2>&5 | 10712 | (eval $ac_try) 2>&5 |
| 10781 | ac_status=$? | 10713 | ac_status=$? |
| @@ -10844,8 +10776,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 10844 | cat conftest.err >&5 | 10776 | cat conftest.err >&5 |
| 10845 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 10777 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 10846 | (exit $ac_status); } && | 10778 | (exit $ac_status); } && |
| 10847 | { ac_try='test -z "$ac_c_werror_flag" | 10779 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 10848 | || test ! -s conftest.err' | ||
| 10849 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 10780 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 10850 | (eval $ac_try) 2>&5 | 10781 | (eval $ac_try) 2>&5 |
| 10851 | ac_status=$? | 10782 | ac_status=$? |
| @@ -10969,8 +10900,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 10969 | cat conftest.err >&5 | 10900 | cat conftest.err >&5 |
| 10970 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 10901 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 10971 | (exit $ac_status); } && | 10902 | (exit $ac_status); } && |
| 10972 | { ac_try='test -z "$ac_c_werror_flag" | 10903 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 10973 | || test ! -s conftest.err' | ||
| 10974 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 10904 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 10975 | (eval $ac_try) 2>&5 | 10905 | (eval $ac_try) 2>&5 |
| 10976 | ac_status=$? | 10906 | ac_status=$? |
| @@ -11066,8 +10996,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 11066 | cat conftest.err >&5 | 10996 | cat conftest.err >&5 |
| 11067 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 10997 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 11068 | (exit $ac_status); } && | 10998 | (exit $ac_status); } && |
| 11069 | { ac_try='test -z "$ac_c_werror_flag" | 10999 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 11070 | || test ! -s conftest.err' | ||
| 11071 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 11000 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 11072 | (eval $ac_try) 2>&5 | 11001 | (eval $ac_try) 2>&5 |
| 11073 | ac_status=$? | 11002 | ac_status=$? |
| @@ -11147,8 +11076,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 11147 | cat conftest.err >&5 | 11076 | cat conftest.err >&5 |
| 11148 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 11077 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 11149 | (exit $ac_status); } && | 11078 | (exit $ac_status); } && |
| 11150 | { ac_try='test -z "$ac_c_werror_flag" | 11079 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 11151 | || test ! -s conftest.err' | ||
| 11152 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 11080 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 11153 | (eval $ac_try) 2>&5 | 11081 | (eval $ac_try) 2>&5 |
| 11154 | ac_status=$? | 11082 | ac_status=$? |
| @@ -11216,8 +11144,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 11216 | cat conftest.err >&5 | 11144 | cat conftest.err >&5 |
| 11217 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 11145 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 11218 | (exit $ac_status); } && | 11146 | (exit $ac_status); } && |
| 11219 | { ac_try='test -z "$ac_c_werror_flag" | 11147 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 11220 | || test ! -s conftest.err' | ||
| 11221 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 11148 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 11222 | (eval $ac_try) 2>&5 | 11149 | (eval $ac_try) 2>&5 |
| 11223 | ac_status=$? | 11150 | ac_status=$? |
| @@ -11362,8 +11289,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 11362 | cat conftest.err >&5 | 11289 | cat conftest.err >&5 |
| 11363 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 11290 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 11364 | (exit $ac_status); } && | 11291 | (exit $ac_status); } && |
| 11365 | { ac_try='test -z "$ac_c_werror_flag" | 11292 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 11366 | || test ! -s conftest.err' | ||
| 11367 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 11293 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 11368 | (eval $ac_try) 2>&5 | 11294 | (eval $ac_try) 2>&5 |
| 11369 | ac_status=$? | 11295 | ac_status=$? |
| @@ -11472,8 +11398,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 11472 | cat conftest.err >&5 | 11398 | cat conftest.err >&5 |
| 11473 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 11399 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 11474 | (exit $ac_status); } && | 11400 | (exit $ac_status); } && |
| 11475 | { ac_try='test -z "$ac_c_werror_flag" | 11401 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 11476 | || test ! -s conftest.err' | ||
| 11477 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 11402 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 11478 | (eval $ac_try) 2>&5 | 11403 | (eval $ac_try) 2>&5 |
| 11479 | ac_status=$? | 11404 | ac_status=$? |
| @@ -11618,8 +11543,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 11618 | cat conftest.err >&5 | 11543 | cat conftest.err >&5 |
| 11619 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 11544 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 11620 | (exit $ac_status); } && | 11545 | (exit $ac_status); } && |
| 11621 | { ac_try='test -z "$ac_c_werror_flag" | 11546 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 11622 | || test ! -s conftest.err' | ||
| 11623 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 11547 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 11624 | (eval $ac_try) 2>&5 | 11548 | (eval $ac_try) 2>&5 |
| 11625 | ac_status=$? | 11549 | ac_status=$? |
| @@ -11726,8 +11650,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 11726 | cat conftest.err >&5 | 11650 | cat conftest.err >&5 |
| 11727 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 11651 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 11728 | (exit $ac_status); } && | 11652 | (exit $ac_status); } && |
| 11729 | { ac_try='test -z "$ac_c_werror_flag" | 11653 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 11730 | || test ! -s conftest.err' | ||
| 11731 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 11654 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 11732 | (eval $ac_try) 2>&5 | 11655 | (eval $ac_try) 2>&5 |
| 11733 | ac_status=$? | 11656 | ac_status=$? |
| @@ -11881,8 +11804,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 11881 | cat conftest.err >&5 | 11804 | cat conftest.err >&5 |
| 11882 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 11805 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 11883 | (exit $ac_status); } && | 11806 | (exit $ac_status); } && |
| 11884 | { ac_try='test -z "$ac_c_werror_flag" | 11807 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 11885 | || test ! -s conftest.err' | ||
| 11886 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 11808 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 11887 | (eval $ac_try) 2>&5 | 11809 | (eval $ac_try) 2>&5 |
| 11888 | ac_status=$? | 11810 | ac_status=$? |
| @@ -11957,8 +11879,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 11957 | cat conftest.err >&5 | 11879 | cat conftest.err >&5 |
| 11958 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 11880 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 11959 | (exit $ac_status); } && | 11881 | (exit $ac_status); } && |
| 11960 | { ac_try='test -z "$ac_c_werror_flag" | 11882 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 11961 | || test ! -s conftest.err' | ||
| 11962 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 11883 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 11963 | (eval $ac_try) 2>&5 | 11884 | (eval $ac_try) 2>&5 |
| 11964 | ac_status=$? | 11885 | ac_status=$? |
| @@ -12106,8 +12027,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 12106 | cat conftest.err >&5 | 12027 | cat conftest.err >&5 |
| 12107 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 12028 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 12108 | (exit $ac_status); } && | 12029 | (exit $ac_status); } && |
| 12109 | { ac_try='test -z "$ac_c_werror_flag" | 12030 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 12110 | || test ! -s conftest.err' | ||
| 12111 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 12031 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 12112 | (eval $ac_try) 2>&5 | 12032 | (eval $ac_try) 2>&5 |
| 12113 | ac_status=$? | 12033 | ac_status=$? |
| @@ -12184,8 +12104,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 12184 | cat conftest.err >&5 | 12104 | cat conftest.err >&5 |
| 12185 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 12105 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 12186 | (exit $ac_status); } && | 12106 | (exit $ac_status); } && |
| 12187 | { ac_try='test -z "$ac_c_werror_flag" | 12107 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 12188 | || test ! -s conftest.err' | ||
| 12189 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 12108 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 12190 | (eval $ac_try) 2>&5 | 12109 | (eval $ac_try) 2>&5 |
| 12191 | ac_status=$? | 12110 | ac_status=$? |
| @@ -12332,8 +12251,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 12332 | cat conftest.err >&5 | 12251 | cat conftest.err >&5 |
| 12333 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 12252 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 12334 | (exit $ac_status); } && | 12253 | (exit $ac_status); } && |
| 12335 | { ac_try='test -z "$ac_c_werror_flag" | 12254 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 12336 | || test ! -s conftest.err' | ||
| 12337 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 12255 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 12338 | (eval $ac_try) 2>&5 | 12256 | (eval $ac_try) 2>&5 |
| 12339 | ac_status=$? | 12257 | ac_status=$? |
| @@ -12409,8 +12327,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 12409 | cat conftest.err >&5 | 12327 | cat conftest.err >&5 |
| 12410 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 12328 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 12411 | (exit $ac_status); } && | 12329 | (exit $ac_status); } && |
| 12412 | { ac_try='test -z "$ac_c_werror_flag" | 12330 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 12413 | || test ! -s conftest.err' | ||
| 12414 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 12331 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 12415 | (eval $ac_try) 2>&5 | 12332 | (eval $ac_try) 2>&5 |
| 12416 | ac_status=$? | 12333 | ac_status=$? |
| @@ -12553,8 +12470,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 12553 | cat conftest.err >&5 | 12470 | cat conftest.err >&5 |
| 12554 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 12471 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 12555 | (exit $ac_status); } && | 12472 | (exit $ac_status); } && |
| 12556 | { ac_try='test -z "$ac_c_werror_flag" | 12473 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 12557 | || test ! -s conftest.err' | ||
| 12558 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 12474 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 12559 | (eval $ac_try) 2>&5 | 12475 | (eval $ac_try) 2>&5 |
| 12560 | ac_status=$? | 12476 | ac_status=$? |
| @@ -12722,8 +12638,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 12722 | cat conftest.err >&5 | 12638 | cat conftest.err >&5 |
| 12723 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 12639 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 12724 | (exit $ac_status); } && | 12640 | (exit $ac_status); } && |
| 12725 | { ac_try='test -z "$ac_c_werror_flag" | 12641 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 12726 | || test ! -s conftest.err' | ||
| 12727 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 12642 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 12728 | (eval $ac_try) 2>&5 | 12643 | (eval $ac_try) 2>&5 |
| 12729 | ac_status=$? | 12644 | ac_status=$? |
| @@ -12868,8 +12783,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 12868 | cat conftest.err >&5 | 12783 | cat conftest.err >&5 |
| 12869 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 12784 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 12870 | (exit $ac_status); } && | 12785 | (exit $ac_status); } && |
| 12871 | { ac_try='test -z "$ac_c_werror_flag" | 12786 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 12872 | || test ! -s conftest.err' | ||
| 12873 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 12787 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 12874 | (eval $ac_try) 2>&5 | 12788 | (eval $ac_try) 2>&5 |
| 12875 | ac_status=$? | 12789 | ac_status=$? |
| @@ -12945,8 +12859,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 12945 | cat conftest.err >&5 | 12859 | cat conftest.err >&5 |
| 12946 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 12860 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 12947 | (exit $ac_status); } && | 12861 | (exit $ac_status); } && |
| 12948 | { ac_try='test -z "$ac_c_werror_flag" | 12862 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 12949 | || test ! -s conftest.err' | ||
| 12950 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 12863 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 12951 | (eval $ac_try) 2>&5 | 12864 | (eval $ac_try) 2>&5 |
| 12952 | ac_status=$? | 12865 | ac_status=$? |
| @@ -13009,8 +12922,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 13009 | cat conftest.err >&5 | 12922 | cat conftest.err >&5 |
| 13010 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 12923 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 13011 | (exit $ac_status); } && | 12924 | (exit $ac_status); } && |
| 13012 | { ac_try='test -z "$ac_c_werror_flag" | 12925 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 13013 | || test ! -s conftest.err' | ||
| 13014 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 12926 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 13015 | (eval $ac_try) 2>&5 | 12927 | (eval $ac_try) 2>&5 |
| 13016 | ac_status=$? | 12928 | ac_status=$? |
| @@ -13091,8 +13003,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 13091 | cat conftest.err >&5 | 13003 | cat conftest.err >&5 |
| 13092 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 13004 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 13093 | (exit $ac_status); } && | 13005 | (exit $ac_status); } && |
| 13094 | { ac_try='test -z "$ac_c_werror_flag" | 13006 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 13095 | || test ! -s conftest.err' | ||
| 13096 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 13007 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 13097 | (eval $ac_try) 2>&5 | 13008 | (eval $ac_try) 2>&5 |
| 13098 | ac_status=$? | 13009 | ac_status=$? |
| @@ -13233,8 +13144,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 13233 | cat conftest.err >&5 | 13144 | cat conftest.err >&5 |
| 13234 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 13145 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 13235 | (exit $ac_status); } && | 13146 | (exit $ac_status); } && |
| 13236 | { ac_try='test -z "$ac_c_werror_flag" | 13147 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 13237 | || test ! -s conftest.err' | ||
| 13238 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 13148 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 13239 | (eval $ac_try) 2>&5 | 13149 | (eval $ac_try) 2>&5 |
| 13240 | ac_status=$? | 13150 | ac_status=$? |
| @@ -13379,8 +13289,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 13379 | cat conftest.err >&5 | 13289 | cat conftest.err >&5 |
| 13380 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 13290 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 13381 | (exit $ac_status); } && | 13291 | (exit $ac_status); } && |
| 13382 | { ac_try='test -z "$ac_c_werror_flag" | 13292 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 13383 | || test ! -s conftest.err' | ||
| 13384 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 13293 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 13385 | (eval $ac_try) 2>&5 | 13294 | (eval $ac_try) 2>&5 |
| 13386 | ac_status=$? | 13295 | ac_status=$? |
| @@ -13456,8 +13365,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 13456 | cat conftest.err >&5 | 13365 | cat conftest.err >&5 |
| 13457 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 13366 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 13458 | (exit $ac_status); } && | 13367 | (exit $ac_status); } && |
| 13459 | { ac_try='test -z "$ac_c_werror_flag" | 13368 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 13460 | || test ! -s conftest.err' | ||
| 13461 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 13369 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 13462 | (eval $ac_try) 2>&5 | 13370 | (eval $ac_try) 2>&5 |
| 13463 | ac_status=$? | 13371 | ac_status=$? |
| @@ -13530,8 +13438,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 13530 | cat conftest.err >&5 | 13438 | cat conftest.err >&5 |
| 13531 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 13439 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 13532 | (exit $ac_status); } && | 13440 | (exit $ac_status); } && |
| 13533 | { ac_try='test -z "$ac_c_werror_flag" | 13441 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 13534 | || test ! -s conftest.err' | ||
| 13535 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 13442 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 13536 | (eval $ac_try) 2>&5 | 13443 | (eval $ac_try) 2>&5 |
| 13537 | ac_status=$? | 13444 | ac_status=$? |
| @@ -13686,8 +13593,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 13686 | cat conftest.err >&5 | 13593 | cat conftest.err >&5 |
| 13687 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 13594 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 13688 | (exit $ac_status); } && | 13595 | (exit $ac_status); } && |
| 13689 | { ac_try='test -z "$ac_c_werror_flag" | 13596 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 13690 | || test ! -s conftest.err' | ||
| 13691 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 13597 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 13692 | (eval $ac_try) 2>&5 | 13598 | (eval $ac_try) 2>&5 |
| 13693 | ac_status=$? | 13599 | ac_status=$? |
| @@ -13753,8 +13659,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 13753 | cat conftest.err >&5 | 13659 | cat conftest.err >&5 |
| 13754 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 13660 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 13755 | (exit $ac_status); } && | 13661 | (exit $ac_status); } && |
| 13756 | { ac_try='test -z "$ac_c_werror_flag" | 13662 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 13757 | || test ! -s conftest.err' | ||
| 13758 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 13663 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 13759 | (eval $ac_try) 2>&5 | 13664 | (eval $ac_try) 2>&5 |
| 13760 | ac_status=$? | 13665 | ac_status=$? |
| @@ -14013,8 +13918,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 14013 | cat conftest.err >&5 | 13918 | cat conftest.err >&5 |
| 14014 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 13919 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 14015 | (exit $ac_status); } && | 13920 | (exit $ac_status); } && |
| 14016 | { ac_try='test -z "$ac_c_werror_flag" | 13921 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 14017 | || test ! -s conftest.err' | ||
| 14018 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 13922 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 14019 | (eval $ac_try) 2>&5 | 13923 | (eval $ac_try) 2>&5 |
| 14020 | ac_status=$? | 13924 | ac_status=$? |
| @@ -14081,8 +13985,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 14081 | cat conftest.err >&5 | 13985 | cat conftest.err >&5 |
| 14082 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 13986 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 14083 | (exit $ac_status); } && | 13987 | (exit $ac_status); } && |
| 14084 | { ac_try='test -z "$ac_c_werror_flag" | 13988 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 14085 | || test ! -s conftest.err' | ||
| 14086 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 13989 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 14087 | (eval $ac_try) 2>&5 | 13990 | (eval $ac_try) 2>&5 |
| 14088 | ac_status=$? | 13991 | ac_status=$? |
| @@ -14234,8 +14137,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 14234 | cat conftest.err >&5 | 14137 | cat conftest.err >&5 |
| 14235 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 14138 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 14236 | (exit $ac_status); } && | 14139 | (exit $ac_status); } && |
| 14237 | { ac_try='test -z "$ac_c_werror_flag" | 14140 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 14238 | || test ! -s conftest.err' | ||
| 14239 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 14141 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 14240 | (eval $ac_try) 2>&5 | 14142 | (eval $ac_try) 2>&5 |
| 14241 | ac_status=$? | 14143 | ac_status=$? |
| @@ -14419,8 +14321,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 14419 | cat conftest.err >&5 | 14321 | cat conftest.err >&5 |
| 14420 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 14322 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 14421 | (exit $ac_status); } && | 14323 | (exit $ac_status); } && |
| 14422 | { ac_try='test -z "$ac_c_werror_flag" | 14324 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 14423 | || test ! -s conftest.err' | ||
| 14424 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 14325 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 14425 | (eval $ac_try) 2>&5 | 14326 | (eval $ac_try) 2>&5 |
| 14426 | ac_status=$? | 14327 | ac_status=$? |
| @@ -14747,8 +14648,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 14747 | cat conftest.err >&5 | 14648 | cat conftest.err >&5 |
| 14748 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 14649 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 14749 | (exit $ac_status); } && | 14650 | (exit $ac_status); } && |
| 14750 | { ac_try='test -z "$ac_c_werror_flag" | 14651 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 14751 | || test ! -s conftest.err' | ||
| 14752 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 14652 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 14753 | (eval $ac_try) 2>&5 | 14653 | (eval $ac_try) 2>&5 |
| 14754 | ac_status=$? | 14654 | ac_status=$? |
| @@ -14849,8 +14749,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 14849 | cat conftest.err >&5 | 14749 | cat conftest.err >&5 |
| 14850 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 14750 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 14851 | (exit $ac_status); } && | 14751 | (exit $ac_status); } && |
| 14852 | { ac_try='test -z "$ac_c_werror_flag" | 14752 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 14853 | || test ! -s conftest.err' | ||
| 14854 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 14753 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 14855 | (eval $ac_try) 2>&5 | 14754 | (eval $ac_try) 2>&5 |
| 14856 | ac_status=$? | 14755 | ac_status=$? |
| @@ -14923,8 +14822,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 14923 | cat conftest.err >&5 | 14822 | cat conftest.err >&5 |
| 14924 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 14823 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 14925 | (exit $ac_status); } && | 14824 | (exit $ac_status); } && |
| 14926 | { ac_try='test -z "$ac_c_werror_flag" | 14825 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 14927 | || test ! -s conftest.err' | ||
| 14928 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 14826 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 14929 | (eval $ac_try) 2>&5 | 14827 | (eval $ac_try) 2>&5 |
| 14930 | ac_status=$? | 14828 | ac_status=$? |
| @@ -15003,8 +14901,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 15003 | cat conftest.err >&5 | 14901 | cat conftest.err >&5 |
| 15004 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 14902 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 15005 | (exit $ac_status); } && | 14903 | (exit $ac_status); } && |
| 15006 | { ac_try='test -z "$ac_c_werror_flag" | 14904 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 15007 | || test ! -s conftest.err' | ||
| 15008 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 14905 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 15009 | (eval $ac_try) 2>&5 | 14906 | (eval $ac_try) 2>&5 |
| 15010 | ac_status=$? | 14907 | ac_status=$? |
| @@ -15073,8 +14970,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 15073 | cat conftest.err >&5 | 14970 | cat conftest.err >&5 |
| 15074 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 14971 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 15075 | (exit $ac_status); } && | 14972 | (exit $ac_status); } && |
| 15076 | { ac_try='test -z "$ac_c_werror_flag" | 14973 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 15077 | || test ! -s conftest.err' | ||
| 15078 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 14974 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 15079 | (eval $ac_try) 2>&5 | 14975 | (eval $ac_try) 2>&5 |
| 15080 | ac_status=$? | 14976 | ac_status=$? |
| @@ -15142,8 +15038,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 15142 | cat conftest.err >&5 | 15038 | cat conftest.err >&5 |
| 15143 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 15039 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 15144 | (exit $ac_status); } && | 15040 | (exit $ac_status); } && |
| 15145 | { ac_try='test -z "$ac_c_werror_flag" | 15041 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 15146 | || test ! -s conftest.err' | ||
| 15147 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 15042 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 15148 | (eval $ac_try) 2>&5 | 15043 | (eval $ac_try) 2>&5 |
| 15149 | ac_status=$? | 15044 | ac_status=$? |
| @@ -15217,8 +15112,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 15217 | cat conftest.err >&5 | 15112 | cat conftest.err >&5 |
| 15218 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 15113 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 15219 | (exit $ac_status); } && | 15114 | (exit $ac_status); } && |
| 15220 | { ac_try='test -z "$ac_c_werror_flag" | 15115 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 15221 | || test ! -s conftest.err' | ||
| 15222 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 15116 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 15223 | (eval $ac_try) 2>&5 | 15117 | (eval $ac_try) 2>&5 |
| 15224 | ac_status=$? | 15118 | ac_status=$? |
| @@ -15322,8 +15216,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 15322 | cat conftest.err >&5 | 15216 | cat conftest.err >&5 |
| 15323 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 15217 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 15324 | (exit $ac_status); } && | 15218 | (exit $ac_status); } && |
| 15325 | { ac_try='test -z "$ac_c_werror_flag" | 15219 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 15326 | || test ! -s conftest.err' | ||
| 15327 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 15220 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 15328 | (eval $ac_try) 2>&5 | 15221 | (eval $ac_try) 2>&5 |
| 15329 | ac_status=$? | 15222 | ac_status=$? |
| @@ -15398,8 +15291,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 15398 | cat conftest.err >&5 | 15291 | cat conftest.err >&5 |
| 15399 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 15292 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 15400 | (exit $ac_status); } && | 15293 | (exit $ac_status); } && |
| 15401 | { ac_try='test -z "$ac_c_werror_flag" | 15294 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 15402 | || test ! -s conftest.err' | ||
| 15403 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 15295 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 15404 | (eval $ac_try) 2>&5 | 15296 | (eval $ac_try) 2>&5 |
| 15405 | ac_status=$? | 15297 | ac_status=$? |
| @@ -15551,8 +15443,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 15551 | cat conftest.err >&5 | 15443 | cat conftest.err >&5 |
| 15552 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 15444 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 15553 | (exit $ac_status); } && | 15445 | (exit $ac_status); } && |
| 15554 | { ac_try='test -z "$ac_c_werror_flag" | 15446 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 15555 | || test ! -s conftest.err' | ||
| 15556 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 15447 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 15557 | (eval $ac_try) 2>&5 | 15448 | (eval $ac_try) 2>&5 |
| 15558 | ac_status=$? | 15449 | ac_status=$? |
| @@ -15620,8 +15511,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 15620 | cat conftest.err >&5 | 15511 | cat conftest.err >&5 |
| 15621 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 15512 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 15622 | (exit $ac_status); } && | 15513 | (exit $ac_status); } && |
| 15623 | { ac_try='test -z "$ac_c_werror_flag" | 15514 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 15624 | || test ! -s conftest.err' | ||
| 15625 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 15515 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 15626 | (eval $ac_try) 2>&5 | 15516 | (eval $ac_try) 2>&5 |
| 15627 | ac_status=$? | 15517 | ac_status=$? |
| @@ -15798,8 +15688,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 15798 | cat conftest.err >&5 | 15688 | cat conftest.err >&5 |
| 15799 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 15689 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 15800 | (exit $ac_status); } && | 15690 | (exit $ac_status); } && |
| 15801 | { ac_try='test -z "$ac_c_werror_flag" | 15691 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 15802 | || test ! -s conftest.err' | ||
| 15803 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 15692 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 15804 | (eval $ac_try) 2>&5 | 15693 | (eval $ac_try) 2>&5 |
| 15805 | ac_status=$? | 15694 | ac_status=$? |
| @@ -15875,8 +15764,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 15875 | cat conftest.err >&5 | 15764 | cat conftest.err >&5 |
| 15876 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 15765 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 15877 | (exit $ac_status); } && | 15766 | (exit $ac_status); } && |
| 15878 | { ac_try='test -z "$ac_c_werror_flag" | 15767 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 15879 | || test ! -s conftest.err' | ||
| 15880 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 15768 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 15881 | (eval $ac_try) 2>&5 | 15769 | (eval $ac_try) 2>&5 |
| 15882 | ac_status=$? | 15770 | ac_status=$? |
| @@ -16030,8 +15918,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 16030 | cat conftest.err >&5 | 15918 | cat conftest.err >&5 |
| 16031 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 15919 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 16032 | (exit $ac_status); } && | 15920 | (exit $ac_status); } && |
| 16033 | { ac_try='test -z "$ac_c_werror_flag" | 15921 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 16034 | || test ! -s conftest.err' | ||
| 16035 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 15922 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 16036 | (eval $ac_try) 2>&5 | 15923 | (eval $ac_try) 2>&5 |
| 16037 | ac_status=$? | 15924 | ac_status=$? |
| @@ -16182,8 +16069,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 16182 | cat conftest.err >&5 | 16069 | cat conftest.err >&5 |
| 16183 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 16070 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 16184 | (exit $ac_status); } && | 16071 | (exit $ac_status); } && |
| 16185 | { ac_try='test -z "$ac_c_werror_flag" | 16072 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 16186 | || test ! -s conftest.err' | ||
| 16187 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 16073 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 16188 | (eval $ac_try) 2>&5 | 16074 | (eval $ac_try) 2>&5 |
| 16189 | ac_status=$? | 16075 | ac_status=$? |
| @@ -16334,8 +16220,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 16334 | cat conftest.err >&5 | 16220 | cat conftest.err >&5 |
| 16335 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 16221 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 16336 | (exit $ac_status); } && | 16222 | (exit $ac_status); } && |
| 16337 | { ac_try='test -z "$ac_c_werror_flag" | 16223 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 16338 | || test ! -s conftest.err' | ||
| 16339 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 16224 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 16340 | (eval $ac_try) 2>&5 | 16225 | (eval $ac_try) 2>&5 |
| 16341 | ac_status=$? | 16226 | ac_status=$? |
| @@ -16477,8 +16362,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 16477 | cat conftest.err >&5 | 16362 | cat conftest.err >&5 |
| 16478 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 16363 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 16479 | (exit $ac_status); } && | 16364 | (exit $ac_status); } && |
| 16480 | { ac_try='test -z "$ac_c_werror_flag" | 16365 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 16481 | || test ! -s conftest.err' | ||
| 16482 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 16366 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 16483 | (eval $ac_try) 2>&5 | 16367 | (eval $ac_try) 2>&5 |
| 16484 | ac_status=$? | 16368 | ac_status=$? |
| @@ -16522,8 +16406,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 16522 | cat conftest.err >&5 | 16406 | cat conftest.err >&5 |
| 16523 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 16407 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 16524 | (exit $ac_status); } && | 16408 | (exit $ac_status); } && |
| 16525 | { ac_try='test -z "$ac_c_werror_flag" | 16409 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 16526 | || test ! -s conftest.err' | ||
| 16527 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 16410 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 16528 | (eval $ac_try) 2>&5 | 16411 | (eval $ac_try) 2>&5 |
| 16529 | ac_status=$? | 16412 | ac_status=$? |
| @@ -16669,8 +16552,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 16669 | cat conftest.err >&5 | 16552 | cat conftest.err >&5 |
| 16670 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 16553 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 16671 | (exit $ac_status); } && | 16554 | (exit $ac_status); } && |
| 16672 | { ac_try='test -z "$ac_c_werror_flag" | 16555 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 16673 | || test ! -s conftest.err' | ||
| 16674 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 16556 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 16675 | (eval $ac_try) 2>&5 | 16557 | (eval $ac_try) 2>&5 |
| 16676 | ac_status=$? | 16558 | ac_status=$? |
| @@ -16714,8 +16596,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 16714 | cat conftest.err >&5 | 16596 | cat conftest.err >&5 |
| 16715 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 16597 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 16716 | (exit $ac_status); } && | 16598 | (exit $ac_status); } && |
| 16717 | { ac_try='test -z "$ac_c_werror_flag" | 16599 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 16718 | || test ! -s conftest.err' | ||
| 16719 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 16600 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 16720 | (eval $ac_try) 2>&5 | 16601 | (eval $ac_try) 2>&5 |
| 16721 | ac_status=$? | 16602 | ac_status=$? |
| @@ -16780,8 +16661,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 16780 | cat conftest.err >&5 | 16661 | cat conftest.err >&5 |
| 16781 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 16662 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 16782 | (exit $ac_status); } && | 16663 | (exit $ac_status); } && |
| 16783 | { ac_try='test -z "$ac_c_werror_flag" | 16664 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 16784 | || test ! -s conftest.err' | ||
| 16785 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 16665 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 16786 | (eval $ac_try) 2>&5 | 16666 | (eval $ac_try) 2>&5 |
| 16787 | ac_status=$? | 16667 | ac_status=$? |
| @@ -16844,8 +16724,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 16844 | cat conftest.err >&5 | 16724 | cat conftest.err >&5 |
| 16845 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 16725 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 16846 | (exit $ac_status); } && | 16726 | (exit $ac_status); } && |
| 16847 | { ac_try='test -z "$ac_c_werror_flag" | 16727 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 16848 | || test ! -s conftest.err' | ||
| 16849 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 16728 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 16850 | (eval $ac_try) 2>&5 | 16729 | (eval $ac_try) 2>&5 |
| 16851 | ac_status=$? | 16730 | ac_status=$? |
| @@ -16947,8 +16826,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 16947 | cat conftest.err >&5 | 16826 | cat conftest.err >&5 |
| 16948 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 16827 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 16949 | (exit $ac_status); } && | 16828 | (exit $ac_status); } && |
| 16950 | { ac_try='test -z "$ac_c_werror_flag" | 16829 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 16951 | || test ! -s conftest.err' | ||
| 16952 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 16830 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 16953 | (eval $ac_try) 2>&5 | 16831 | (eval $ac_try) 2>&5 |
| 16954 | ac_status=$? | 16832 | ac_status=$? |
| @@ -17017,8 +16895,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 17017 | cat conftest.err >&5 | 16895 | cat conftest.err >&5 |
| 17018 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 16896 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 17019 | (exit $ac_status); } && | 16897 | (exit $ac_status); } && |
| 17020 | { ac_try='test -z "$ac_c_werror_flag" | 16898 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 17021 | || test ! -s conftest.err' | ||
| 17022 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 16899 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 17023 | (eval $ac_try) 2>&5 | 16900 | (eval $ac_try) 2>&5 |
| 17024 | ac_status=$? | 16901 | ac_status=$? |
| @@ -17125,8 +17002,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 17125 | cat conftest.err >&5 | 17002 | cat conftest.err >&5 |
| 17126 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 17003 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 17127 | (exit $ac_status); } && | 17004 | (exit $ac_status); } && |
| 17128 | { ac_try='test -z "$ac_c_werror_flag" | 17005 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 17129 | || test ! -s conftest.err' | ||
| 17130 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 17006 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 17131 | (eval $ac_try) 2>&5 | 17007 | (eval $ac_try) 2>&5 |
| 17132 | ac_status=$? | 17008 | ac_status=$? |
| @@ -17229,8 +17105,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 17229 | cat conftest.err >&5 | 17105 | cat conftest.err >&5 |
| 17230 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 17106 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 17231 | (exit $ac_status); } && | 17107 | (exit $ac_status); } && |
| 17232 | { ac_try='test -z "$ac_c_werror_flag" | 17108 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 17233 | || test ! -s conftest.err' | ||
| 17234 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 17109 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 17235 | (eval $ac_try) 2>&5 | 17110 | (eval $ac_try) 2>&5 |
| 17236 | ac_status=$? | 17111 | ac_status=$? |
| @@ -17306,8 +17181,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 17306 | cat conftest.err >&5 | 17181 | cat conftest.err >&5 |
| 17307 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 17182 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 17308 | (exit $ac_status); } && | 17183 | (exit $ac_status); } && |
| 17309 | { ac_try='test -z "$ac_c_werror_flag" | 17184 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 17310 | || test ! -s conftest.err' | ||
| 17311 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 17185 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 17312 | (eval $ac_try) 2>&5 | 17186 | (eval $ac_try) 2>&5 |
| 17313 | ac_status=$? | 17187 | ac_status=$? |
| @@ -17411,8 +17285,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 17411 | cat conftest.err >&5 | 17285 | cat conftest.err >&5 |
| 17412 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 17286 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 17413 | (exit $ac_status); } && | 17287 | (exit $ac_status); } && |
| 17414 | { ac_try='test -z "$ac_c_werror_flag" | 17288 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 17415 | || test ! -s conftest.err' | ||
| 17416 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 17289 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 17417 | (eval $ac_try) 2>&5 | 17290 | (eval $ac_try) 2>&5 |
| 17418 | ac_status=$? | 17291 | ac_status=$? |
| @@ -17504,8 +17377,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 17504 | cat conftest.err >&5 | 17377 | cat conftest.err >&5 |
| 17505 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 17378 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 17506 | (exit $ac_status); } && | 17379 | (exit $ac_status); } && |
| 17507 | { ac_try='test -z "$ac_c_werror_flag" | 17380 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 17508 | || test ! -s conftest.err' | ||
| 17509 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 17381 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 17510 | (eval $ac_try) 2>&5 | 17382 | (eval $ac_try) 2>&5 |
| 17511 | ac_status=$? | 17383 | ac_status=$? |
| @@ -17570,8 +17442,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 17570 | cat conftest.err >&5 | 17442 | cat conftest.err >&5 |
| 17571 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 17443 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 17572 | (exit $ac_status); } && | 17444 | (exit $ac_status); } && |
| 17573 | { ac_try='test -z "$ac_c_werror_flag" | 17445 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 17574 | || test ! -s conftest.err' | ||
| 17575 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 17446 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 17576 | (eval $ac_try) 2>&5 | 17447 | (eval $ac_try) 2>&5 |
| 17577 | ac_status=$? | 17448 | ac_status=$? |
| @@ -17637,8 +17508,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 17637 | cat conftest.err >&5 | 17508 | cat conftest.err >&5 |
| 17638 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 17509 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 17639 | (exit $ac_status); } && | 17510 | (exit $ac_status); } && |
| 17640 | { ac_try='test -z "$ac_c_werror_flag" | 17511 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 17641 | || test ! -s conftest.err' | ||
| 17642 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 17512 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 17643 | (eval $ac_try) 2>&5 | 17513 | (eval $ac_try) 2>&5 |
| 17644 | ac_status=$? | 17514 | ac_status=$? |
| @@ -17748,8 +17618,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 17748 | cat conftest.err >&5 | 17618 | cat conftest.err >&5 |
| 17749 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 17619 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 17750 | (exit $ac_status); } && | 17620 | (exit $ac_status); } && |
| 17751 | { ac_try='test -z "$ac_c_werror_flag" | 17621 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 17752 | || test ! -s conftest.err' | ||
| 17753 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 17622 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 17754 | (eval $ac_try) 2>&5 | 17623 | (eval $ac_try) 2>&5 |
| 17755 | ac_status=$? | 17624 | ac_status=$? |
| @@ -17814,8 +17683,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 17814 | cat conftest.err >&5 | 17683 | cat conftest.err >&5 |
| 17815 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 17684 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 17816 | (exit $ac_status); } && | 17685 | (exit $ac_status); } && |
| 17817 | { ac_try='test -z "$ac_c_werror_flag" | 17686 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 17818 | || test ! -s conftest.err' | ||
| 17819 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 17687 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 17820 | (eval $ac_try) 2>&5 | 17688 | (eval $ac_try) 2>&5 |
| 17821 | ac_status=$? | 17689 | ac_status=$? |
| @@ -17895,8 +17763,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 17895 | cat conftest.err >&5 | 17763 | cat conftest.err >&5 |
| 17896 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 17764 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 17897 | (exit $ac_status); } && | 17765 | (exit $ac_status); } && |
| 17898 | { ac_try='test -z "$ac_c_werror_flag" | 17766 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 17899 | || test ! -s conftest.err' | ||
| 17900 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 17767 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 17901 | (eval $ac_try) 2>&5 | 17768 | (eval $ac_try) 2>&5 |
| 17902 | ac_status=$? | 17769 | ac_status=$? |
| @@ -17969,8 +17836,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 17969 | cat conftest.err >&5 | 17836 | cat conftest.err >&5 |
| 17970 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 17837 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 17971 | (exit $ac_status); } && | 17838 | (exit $ac_status); } && |
| 17972 | { ac_try='test -z "$ac_c_werror_flag" | 17839 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 17973 | || test ! -s conftest.err' | ||
| 17974 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 17840 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 17975 | (eval $ac_try) 2>&5 | 17841 | (eval $ac_try) 2>&5 |
| 17976 | ac_status=$? | 17842 | ac_status=$? |
| @@ -18043,8 +17909,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 18043 | cat conftest.err >&5 | 17909 | cat conftest.err >&5 |
| 18044 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 17910 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 18045 | (exit $ac_status); } && | 17911 | (exit $ac_status); } && |
| 18046 | { ac_try='test -z "$ac_c_werror_flag" | 17912 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 18047 | || test ! -s conftest.err' | ||
| 18048 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 17913 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 18049 | (eval $ac_try) 2>&5 | 17914 | (eval $ac_try) 2>&5 |
| 18050 | ac_status=$? | 17915 | ac_status=$? |
| @@ -18117,8 +17982,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 18117 | cat conftest.err >&5 | 17982 | cat conftest.err >&5 |
| 18118 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 17983 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 18119 | (exit $ac_status); } && | 17984 | (exit $ac_status); } && |
| 18120 | { ac_try='test -z "$ac_c_werror_flag" | 17985 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 18121 | || test ! -s conftest.err' | ||
| 18122 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 17986 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 18123 | (eval $ac_try) 2>&5 | 17987 | (eval $ac_try) 2>&5 |
| 18124 | ac_status=$? | 17988 | ac_status=$? |
| @@ -18192,8 +18056,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 18192 | cat conftest.err >&5 | 18056 | cat conftest.err >&5 |
| 18193 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 18057 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 18194 | (exit $ac_status); } && | 18058 | (exit $ac_status); } && |
| 18195 | { ac_try='test -z "$ac_c_werror_flag" | 18059 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 18196 | || test ! -s conftest.err' | ||
| 18197 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 18060 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 18198 | (eval $ac_try) 2>&5 | 18061 | (eval $ac_try) 2>&5 |
| 18199 | ac_status=$? | 18062 | ac_status=$? |
| @@ -18265,8 +18128,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 18265 | cat conftest.err >&5 | 18128 | cat conftest.err >&5 |
| 18266 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 18129 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 18267 | (exit $ac_status); } && | 18130 | (exit $ac_status); } && |
| 18268 | { ac_try='test -z "$ac_c_werror_flag" | 18131 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 18269 | || test ! -s conftest.err' | ||
| 18270 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 18132 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 18271 | (eval $ac_try) 2>&5 | 18133 | (eval $ac_try) 2>&5 |
| 18272 | ac_status=$? | 18134 | ac_status=$? |
| @@ -18341,8 +18203,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 18341 | cat conftest.err >&5 | 18203 | cat conftest.err >&5 |
| 18342 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 18204 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 18343 | (exit $ac_status); } && | 18205 | (exit $ac_status); } && |
| 18344 | { ac_try='test -z "$ac_c_werror_flag" | 18206 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 18345 | || test ! -s conftest.err' | ||
| 18346 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 18207 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 18347 | (eval $ac_try) 2>&5 | 18208 | (eval $ac_try) 2>&5 |
| 18348 | ac_status=$? | 18209 | ac_status=$? |
| @@ -18414,8 +18275,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 18414 | cat conftest.err >&5 | 18275 | cat conftest.err >&5 |
| 18415 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 18276 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 18416 | (exit $ac_status); } && | 18277 | (exit $ac_status); } && |
| 18417 | { ac_try='test -z "$ac_c_werror_flag" | 18278 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 18418 | || test ! -s conftest.err' | ||
| 18419 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 18279 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 18420 | (eval $ac_try) 2>&5 | 18280 | (eval $ac_try) 2>&5 |
| 18421 | ac_status=$? | 18281 | ac_status=$? |
| @@ -18488,8 +18348,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 18488 | cat conftest.err >&5 | 18348 | cat conftest.err >&5 |
| 18489 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 18349 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 18490 | (exit $ac_status); } && | 18350 | (exit $ac_status); } && |
| 18491 | { ac_try='test -z "$ac_c_werror_flag" | 18351 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 18492 | || test ! -s conftest.err' | ||
| 18493 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 18352 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 18494 | (eval $ac_try) 2>&5 | 18353 | (eval $ac_try) 2>&5 |
| 18495 | ac_status=$? | 18354 | ac_status=$? |
| @@ -18639,8 +18498,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 18639 | cat conftest.err >&5 | 18498 | cat conftest.err >&5 |
| 18640 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 18499 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 18641 | (exit $ac_status); } && | 18500 | (exit $ac_status); } && |
| 18642 | { ac_try='test -z "$ac_c_werror_flag" | 18501 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 18643 | || test ! -s conftest.err' | ||
| 18644 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 18502 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 18645 | (eval $ac_try) 2>&5 | 18503 | (eval $ac_try) 2>&5 |
| 18646 | ac_status=$? | 18504 | ac_status=$? |
| @@ -18786,8 +18644,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 18786 | cat conftest.err >&5 | 18644 | cat conftest.err >&5 |
| 18787 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 18645 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 18788 | (exit $ac_status); } && | 18646 | (exit $ac_status); } && |
| 18789 | { ac_try='test -z "$ac_c_werror_flag" | 18647 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 18790 | || test ! -s conftest.err' | ||
| 18791 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 18648 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 18792 | (eval $ac_try) 2>&5 | 18649 | (eval $ac_try) 2>&5 |
| 18793 | ac_status=$? | 18650 | ac_status=$? |
| @@ -18933,8 +18790,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 18933 | cat conftest.err >&5 | 18790 | cat conftest.err >&5 |
| 18934 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 18791 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 18935 | (exit $ac_status); } && | 18792 | (exit $ac_status); } && |
| 18936 | { ac_try='test -z "$ac_c_werror_flag" | 18793 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 18937 | || test ! -s conftest.err' | ||
| 18938 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 18794 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 18939 | (eval $ac_try) 2>&5 | 18795 | (eval $ac_try) 2>&5 |
| 18940 | ac_status=$? | 18796 | ac_status=$? |
| @@ -19091,8 +18947,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 19091 | cat conftest.err >&5 | 18947 | cat conftest.err >&5 |
| 19092 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 18948 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 19093 | (exit $ac_status); } && | 18949 | (exit $ac_status); } && |
| 19094 | { ac_try='test -z "$ac_c_werror_flag" | 18950 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 19095 | || test ! -s conftest.err' | ||
| 19096 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 18951 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 19097 | (eval $ac_try) 2>&5 | 18952 | (eval $ac_try) 2>&5 |
| 19098 | ac_status=$? | 18953 | ac_status=$? |
| @@ -19238,8 +19093,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 19238 | cat conftest.err >&5 | 19093 | cat conftest.err >&5 |
| 19239 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 19094 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 19240 | (exit $ac_status); } && | 19095 | (exit $ac_status); } && |
| 19241 | { ac_try='test -z "$ac_c_werror_flag" | 19096 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 19242 | || test ! -s conftest.err' | ||
| 19243 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 19097 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 19244 | (eval $ac_try) 2>&5 | 19098 | (eval $ac_try) 2>&5 |
| 19245 | ac_status=$? | 19099 | ac_status=$? |
| @@ -19385,8 +19239,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 19385 | cat conftest.err >&5 | 19239 | cat conftest.err >&5 |
| 19386 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 19240 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 19387 | (exit $ac_status); } && | 19241 | (exit $ac_status); } && |
| 19388 | { ac_try='test -z "$ac_c_werror_flag" | 19242 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 19389 | || test ! -s conftest.err' | ||
| 19390 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 19243 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 19391 | (eval $ac_try) 2>&5 | 19244 | (eval $ac_try) 2>&5 |
| 19392 | ac_status=$? | 19245 | ac_status=$? |
| @@ -19544,8 +19397,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 19544 | cat conftest.err >&5 | 19397 | cat conftest.err >&5 |
| 19545 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 19398 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 19546 | (exit $ac_status); } && | 19399 | (exit $ac_status); } && |
| 19547 | { ac_try='test -z "$ac_c_werror_flag" | 19400 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 19548 | || test ! -s conftest.err' | ||
| 19549 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 19401 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 19550 | (eval $ac_try) 2>&5 | 19402 | (eval $ac_try) 2>&5 |
| 19551 | ac_status=$? | 19403 | ac_status=$? |
| @@ -19703,8 +19555,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 19703 | cat conftest.err >&5 | 19555 | cat conftest.err >&5 |
| 19704 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 19556 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 19705 | (exit $ac_status); } && | 19557 | (exit $ac_status); } && |
| 19706 | { ac_try='test -z "$ac_c_werror_flag" | 19558 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 19707 | || test ! -s conftest.err' | ||
| 19708 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 19559 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 19709 | (eval $ac_try) 2>&5 | 19560 | (eval $ac_try) 2>&5 |
| 19710 | ac_status=$? | 19561 | ac_status=$? |
| @@ -19893,8 +19744,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 19893 | cat conftest.err >&5 | 19744 | cat conftest.err >&5 |
| 19894 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 19745 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 19895 | (exit $ac_status); } && | 19746 | (exit $ac_status); } && |
| 19896 | { ac_try='test -z "$ac_c_werror_flag" | 19747 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 19897 | || test ! -s conftest.err' | ||
| 19898 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 19748 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 19899 | (eval $ac_try) 2>&5 | 19749 | (eval $ac_try) 2>&5 |
| 19900 | ac_status=$? | 19750 | ac_status=$? |
| @@ -19967,8 +19817,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 19967 | cat conftest.err >&5 | 19817 | cat conftest.err >&5 |
| 19968 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 19818 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 19969 | (exit $ac_status); } && | 19819 | (exit $ac_status); } && |
| 19970 | { ac_try='test -z "$ac_c_werror_flag" | 19820 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 19971 | || test ! -s conftest.err' | ||
| 19972 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 19821 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 19973 | (eval $ac_try) 2>&5 | 19822 | (eval $ac_try) 2>&5 |
| 19974 | ac_status=$? | 19823 | ac_status=$? |
| @@ -20036,8 +19885,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 20036 | cat conftest.err >&5 | 19885 | cat conftest.err >&5 |
| 20037 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 19886 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 20038 | (exit $ac_status); } && | 19887 | (exit $ac_status); } && |
| 20039 | { ac_try='test -z "$ac_c_werror_flag" | 19888 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 20040 | || test ! -s conftest.err' | ||
| 20041 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 19889 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 20042 | (eval $ac_try) 2>&5 | 19890 | (eval $ac_try) 2>&5 |
| 20043 | ac_status=$? | 19891 | ac_status=$? |
| @@ -20083,8 +19931,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 20083 | cat conftest.err >&5 | 19931 | cat conftest.err >&5 |
| 20084 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 19932 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 20085 | (exit $ac_status); } && | 19933 | (exit $ac_status); } && |
| 20086 | { ac_try='test -z "$ac_c_werror_flag" | 19934 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 20087 | || test ! -s conftest.err' | ||
| 20088 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 19935 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 20089 | (eval $ac_try) 2>&5 | 19936 | (eval $ac_try) 2>&5 |
| 20090 | ac_status=$? | 19937 | ac_status=$? |
| @@ -20158,8 +20005,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 20158 | cat conftest.err >&5 | 20005 | cat conftest.err >&5 |
| 20159 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 20006 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 20160 | (exit $ac_status); } && | 20007 | (exit $ac_status); } && |
| 20161 | { ac_try='test -z "$ac_c_werror_flag" | 20008 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 20162 | || test ! -s conftest.err' | ||
| 20163 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 20009 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 20164 | (eval $ac_try) 2>&5 | 20010 | (eval $ac_try) 2>&5 |
| 20165 | ac_status=$? | 20011 | ac_status=$? |
| @@ -20223,8 +20069,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 20223 | cat conftest.err >&5 | 20069 | cat conftest.err >&5 |
| 20224 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 20070 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 20225 | (exit $ac_status); } && | 20071 | (exit $ac_status); } && |
| 20226 | { ac_try='test -z "$ac_c_werror_flag" | 20072 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 20227 | || test ! -s conftest.err' | ||
| 20228 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 20073 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 20229 | (eval $ac_try) 2>&5 | 20074 | (eval $ac_try) 2>&5 |
| 20230 | ac_status=$? | 20075 | ac_status=$? |
| @@ -20362,8 +20207,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 20362 | cat conftest.err >&5 | 20207 | cat conftest.err >&5 |
| 20363 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 20208 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 20364 | (exit $ac_status); } && | 20209 | (exit $ac_status); } && |
| 20365 | { ac_try='test -z "$ac_c_werror_flag" | 20210 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 20366 | || test ! -s conftest.err' | ||
| 20367 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 20211 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 20368 | (eval $ac_try) 2>&5 | 20212 | (eval $ac_try) 2>&5 |
| 20369 | ac_status=$? | 20213 | ac_status=$? |
| @@ -20424,8 +20268,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 20424 | cat conftest.err >&5 | 20268 | cat conftest.err >&5 |
| 20425 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 20269 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 20426 | (exit $ac_status); } && | 20270 | (exit $ac_status); } && |
| 20427 | { ac_try='test -z "$ac_c_werror_flag" | 20271 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 20428 | || test ! -s conftest.err' | ||
| 20429 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 20272 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 20430 | (eval $ac_try) 2>&5 | 20273 | (eval $ac_try) 2>&5 |
| 20431 | ac_status=$? | 20274 | ac_status=$? |
| @@ -20570,8 +20413,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 20570 | cat conftest.err >&5 | 20413 | cat conftest.err >&5 |
| 20571 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 20414 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 20572 | (exit $ac_status); } && | 20415 | (exit $ac_status); } && |
| 20573 | { ac_try='test -z "$ac_c_werror_flag" | 20416 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 20574 | || test ! -s conftest.err' | ||
| 20575 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 20417 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 20576 | (eval $ac_try) 2>&5 | 20418 | (eval $ac_try) 2>&5 |
| 20577 | ac_status=$? | 20419 | ac_status=$? |
| @@ -20727,8 +20569,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 20727 | cat conftest.err >&5 | 20569 | cat conftest.err >&5 |
| 20728 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 20570 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 20729 | (exit $ac_status); } && | 20571 | (exit $ac_status); } && |
| 20730 | { ac_try='test -z "$ac_c_werror_flag" | 20572 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 20731 | || test ! -s conftest.err' | ||
| 20732 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 20573 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 20733 | (eval $ac_try) 2>&5 | 20574 | (eval $ac_try) 2>&5 |
| 20734 | ac_status=$? | 20575 | ac_status=$? |
| @@ -20899,8 +20740,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 20899 | cat conftest.err >&5 | 20740 | cat conftest.err >&5 |
| 20900 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 20741 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 20901 | (exit $ac_status); } && | 20742 | (exit $ac_status); } && |
| 20902 | { ac_try='test -z "$ac_c_werror_flag" | 20743 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 20903 | || test ! -s conftest.err' | ||
| 20904 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 20744 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 20905 | (eval $ac_try) 2>&5 | 20745 | (eval $ac_try) 2>&5 |
| 20906 | ac_status=$? | 20746 | ac_status=$? |
| @@ -20968,8 +20808,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 20968 | cat conftest.err >&5 | 20808 | cat conftest.err >&5 |
| 20969 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 20809 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 20970 | (exit $ac_status); } && | 20810 | (exit $ac_status); } && |
| 20971 | { ac_try='test -z "$ac_c_werror_flag" | 20811 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 20972 | || test ! -s conftest.err' | ||
| 20973 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 20812 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 20974 | (eval $ac_try) 2>&5 | 20813 | (eval $ac_try) 2>&5 |
| 20975 | ac_status=$? | 20814 | ac_status=$? |
| @@ -21154,8 +20993,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 21154 | cat conftest.err >&5 | 20993 | cat conftest.err >&5 |
| 21155 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 20994 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 21156 | (exit $ac_status); } && | 20995 | (exit $ac_status); } && |
| 21157 | { ac_try='test -z "$ac_c_werror_flag" | 20996 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 21158 | || test ! -s conftest.err' | ||
| 21159 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 20997 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 21160 | (eval $ac_try) 2>&5 | 20998 | (eval $ac_try) 2>&5 |
| 21161 | ac_status=$? | 20999 | ac_status=$? |
| @@ -21448,8 +21286,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 | |||
| 21448 | cat conftest.err >&5 | 21286 | cat conftest.err >&5 |
| 21449 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 21287 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 21450 | (exit $ac_status); } && | 21288 | (exit $ac_status); } && |
| 21451 | { ac_try='test -z "$ac_c_werror_flag" | 21289 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 21452 | || test ! -s conftest.err' | ||
| 21453 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 21290 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 21454 | (eval $ac_try) 2>&5 | 21291 | (eval $ac_try) 2>&5 |
| 21455 | ac_status=$? | 21292 | ac_status=$? |
| @@ -21514,8 +21351,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 21514 | cat conftest.err >&5 | 21351 | cat conftest.err >&5 |
| 21515 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 21352 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 21516 | (exit $ac_status); } && | 21353 | (exit $ac_status); } && |
| 21517 | { ac_try='test -z "$ac_c_werror_flag" | 21354 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 21518 | || test ! -s conftest.err' | ||
| 21519 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 21355 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 21520 | (eval $ac_try) 2>&5 | 21356 | (eval $ac_try) 2>&5 |
| 21521 | ac_status=$? | 21357 | ac_status=$? |
| @@ -21578,8 +21414,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 21578 | cat conftest.err >&5 | 21414 | cat conftest.err >&5 |
| 21579 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 21415 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 21580 | (exit $ac_status); } && | 21416 | (exit $ac_status); } && |
| 21581 | { ac_try='test -z "$ac_c_werror_flag" | 21417 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 21582 | || test ! -s conftest.err' | ||
| 21583 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 21418 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 21584 | (eval $ac_try) 2>&5 | 21419 | (eval $ac_try) 2>&5 |
| 21585 | ac_status=$? | 21420 | ac_status=$? |
| @@ -21645,8 +21480,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 21645 | cat conftest.err >&5 | 21480 | cat conftest.err >&5 |
| 21646 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 21481 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 21647 | (exit $ac_status); } && | 21482 | (exit $ac_status); } && |
| 21648 | { ac_try='test -z "$ac_c_werror_flag" | 21483 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 21649 | || test ! -s conftest.err' | ||
| 21650 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 21484 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 21651 | (eval $ac_try) 2>&5 | 21485 | (eval $ac_try) 2>&5 |
| 21652 | ac_status=$? | 21486 | ac_status=$? |
| @@ -21687,8 +21521,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 21687 | cat conftest.err >&5 | 21521 | cat conftest.err >&5 |
| 21688 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 21522 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 21689 | (exit $ac_status); } && | 21523 | (exit $ac_status); } && |
| 21690 | { ac_try='test -z "$ac_c_werror_flag" | 21524 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 21691 | || test ! -s conftest.err' | ||
| 21692 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 21525 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 21693 | (eval $ac_try) 2>&5 | 21526 | (eval $ac_try) 2>&5 |
| 21694 | ac_status=$? | 21527 | ac_status=$? |
| @@ -21755,8 +21588,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 | |||
| 21755 | cat conftest.err >&5 | 21588 | cat conftest.err >&5 |
| 21756 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 | 21589 | echo "$as_me:$LINENO: \$? = $ac_status" >&5 |
| 21757 | (exit $ac_status); } && | 21590 | (exit $ac_status); } && |
| 21758 | { ac_try='test -z "$ac_c_werror_flag" | 21591 | { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' |
| 21759 | || test ! -s conftest.err' | ||
| 21760 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 | 21592 | { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 |
| 21761 | (eval $ac_try) 2>&5 | 21593 | (eval $ac_try) 2>&5 |
| 21762 | ac_status=$? | 21594 | ac_status=$? |
| @@ -22885,11 +22717,6 @@ esac | |||
| 22885 | *) ac_INSTALL=$ac_top_builddir$INSTALL ;; | 22717 | *) ac_INSTALL=$ac_top_builddir$INSTALL ;; |
| 22886 | esac | 22718 | esac |
| 22887 | 22719 | ||
| 22888 | if test x"$ac_file" != x-; then | ||
| 22889 | { echo "$as_me:$LINENO: creating $ac_file" >&5 | ||
| 22890 | echo "$as_me: creating $ac_file" >&6;} | ||
| 22891 | rm -f "$ac_file" | ||
| 22892 | fi | ||
| 22893 | # Let's still pretend it is `configure' which instantiates (i.e., don't | 22720 | # Let's still pretend it is `configure' which instantiates (i.e., don't |
| 22894 | # use $as_me), people would be surprised to read: | 22721 | # use $as_me), people would be surprised to read: |
| 22895 | # /* config.h. Generated by config.status. */ | 22722 | # /* config.h. Generated by config.status. */ |
| @@ -22928,6 +22755,12 @@ echo "$as_me: error: cannot find input file: $f" >&2;} | |||
| 22928 | fi;; | 22755 | fi;; |
| 22929 | esac | 22756 | esac |
| 22930 | done` || { (exit 1); exit 1; } | 22757 | done` || { (exit 1); exit 1; } |
| 22758 | |||
| 22759 | if test x"$ac_file" != x-; then | ||
| 22760 | { echo "$as_me:$LINENO: creating $ac_file" >&5 | ||
| 22761 | echo "$as_me: creating $ac_file" >&6;} | ||
| 22762 | rm -f "$ac_file" | ||
| 22763 | fi | ||
| 22931 | _ACEOF | 22764 | _ACEOF |
| 22932 | cat >>$CONFIG_STATUS <<_ACEOF | 22765 | cat >>$CONFIG_STATUS <<_ACEOF |
| 22933 | sed "$ac_vpsub | 22766 | sed "$ac_vpsub |
diff --git a/etc/ChangeLog b/etc/ChangeLog index 23401937003..f0123a8b90d 100644 --- a/etc/ChangeLog +++ b/etc/ChangeLog | |||
| @@ -1,3 +1,11 @@ | |||
| 1 | 2004-12-21 Richard M. Stallman <rms@gnu.org> | ||
| 2 | |||
| 3 | * DISTRIB: Don't say "freeware". | ||
| 4 | |||
| 5 | 2004-12-15 Nick Roberts <nickrob@snap.net.nz> | ||
| 6 | |||
| 7 | * DEBUG: Change printing example to break on a procedure name. | ||
| 8 | |||
| 1 | 2004-12-11 Dan Nicolaescu <dann@ics.uci.edu> | 9 | 2004-12-11 Dan Nicolaescu <dann@ics.uci.edu> |
| 2 | 10 | ||
| 3 | * e/eterm.ti: Add rs1. | 11 | * e/eterm.ti: Add rs1. |
| @@ -107,36 +107,32 @@ objects which you can examine in turn with the x... commands. | |||
| 107 | Even with a live process, these x... commands are useful for | 107 | Even with a live process, these x... commands are useful for |
| 108 | examining the fields in a buffer, window, process, frame or marker. | 108 | examining the fields in a buffer, window, process, frame or marker. |
| 109 | Here's an example using concepts explained in the node "Value History" | 109 | Here's an example using concepts explained in the node "Value History" |
| 110 | of the GDB manual to print the variable frame from this line in | 110 | of the GDB manual to print values associated with the variable |
| 111 | xmenu.c: | 111 | called frame. First, use these commands: |
| 112 | |||
| 113 | buf.frame_or_window = frame; | ||
| 114 | |||
| 115 | First, use these commands: | ||
| 116 | 112 | ||
| 117 | cd src | 113 | cd src |
| 118 | gdb emacs | 114 | gdb emacs |
| 119 | b xmenu.c:1296 | 115 | b set_frame_buffer_list |
| 120 | r -q | 116 | r -q |
| 121 | 117 | ||
| 122 | Then type C-x 5 2 to create a new frame, and it hits the breakpoint: | 118 | Then when Emacs it hits the breakpoint: |
| 123 | 119 | ||
| 124 | (gdb) p frame | 120 | (gdb) p frame |
| 125 | $1 = 1077872640 | 121 | $1 = 139854428 |
| 126 | (gdb) xtype | 122 | (gdb) xtype |
| 127 | Lisp_Vectorlike | 123 | Lisp_Vectorlike |
| 128 | PVEC_FRAME | 124 | PVEC_FRAME |
| 129 | (gdb) xframe | 125 | (gdb) xframe |
| 130 | $2 = (struct frame *) 0x3f0800 | 126 | $2 = (struct frame *) 0x8560258 |
| 131 | (gdb) p *$ | 127 | (gdb) p *$ |
| 132 | $3 = { | 128 | $3 = { |
| 133 | size = 536871989, | 129 | size = 1073742931, |
| 134 | next = 0x366240, | 130 | next = 0x85dfe58, |
| 135 | name = 809661752, | 131 | name = 140615219, |
| 136 | [...] | 132 | [...] |
| 137 | } | 133 | } |
| 138 | (gdb) p $3->name | 134 | (gdb) p $3->name |
| 139 | $4 = 809661752 | 135 | $4 = 140615219 |
| 140 | 136 | ||
| 141 | Now we can use `pr' to print the name of the frame: | 137 | Now we can use `pr' to print the name of the frame: |
| 142 | 138 | ||
diff --git a/etc/DISTRIB b/etc/DISTRIB index f1e8deb6ce1..bc0ea8cc60d 100644 --- a/etc/DISTRIB +++ b/etc/DISTRIB | |||
| @@ -83,7 +83,7 @@ product and divide it by five, that is a good amount. | |||
| 83 | If you like GNU Emacs, please express your satisfaction with a | 83 | If you like GNU Emacs, please express your satisfaction with a |
| 84 | donation: send me or the Foundation what you feel Emacs has been worth | 84 | donation: send me or the Foundation what you feel Emacs has been worth |
| 85 | to you. If you are glad that I developed GNU Emacs and distribute it | 85 | to you. If you are glad that I developed GNU Emacs and distribute it |
| 86 | as freeware, rather than following the obstructive and antisocial | 86 | as free software, rather than following the obstructive and antisocial |
| 87 | practices typical of software developers, reward me. If you would | 87 | practices typical of software developers, reward me. If you would |
| 88 | like the Foundation to develop more free software, contribute. | 88 | like the Foundation to develop more free software, contribute. |
| 89 | 89 | ||
| @@ -173,26 +173,44 @@ types any more. Add -DUSE_LISP_UNION_TYPE if you want union types. | |||
| 173 | 173 | ||
| 174 | * Changes in Emacs 21.4 | 174 | * Changes in Emacs 21.4 |
| 175 | 175 | ||
| 176 | ** line-move-ignore-invisible now defaults to t. | 176 | ** You can now follow links by clicking Mouse-1 on the link. |
| 177 | 177 | ||
| 178 | ** In Outline mode, hide-body no longer hides lines at the top | 178 | Traditionally, Emacs uses a Mouse-1 click to set point and a Mouse-2 |
| 179 | of the file that precede the first header line. | 179 | click to follow a link, whereas most other applications use a Mouse-1 |
| 180 | click for both purposes, depending on whether you click outside or | ||
| 181 | inside a link. With release 21.4, the behaviour of a Mouse-1 click | ||
| 182 | has been changed to match this context-sentitive dual behaviour. | ||
| 180 | 183 | ||
| 181 | +++ | 184 | Depending on the current mode, a Mouse-2 click in Emacs may do much |
| 182 | ** `set-auto-mode' now gives the interpreter magic line (if present) | 185 | more than just follow a link, so the new Mouse-1 behaviour is only |
| 183 | precedence over the file name. Likewise an <?xml or <!DOCTYPE declaration | 186 | activated for modes which explicitly mark a clickable text as a "link" |
| 184 | will give the buffer XML or SGML mode, based on the new var | 187 | (see the new function `mouse-on-link-p' for details). The lisp |
| 185 | `magic-mode-alist'. | 188 | packages that are included in release 21.4 have been adapted to do |
| 189 | this, but external packages may not yet support this. However, there | ||
| 190 | is no risk in using such packages, as the worst thing that could | ||
| 191 | happen is that you get the original Mouse-1 behaviour when you click | ||
| 192 | on a link, which typically means that you set point where you click. | ||
| 186 | 193 | ||
| 187 | +++ | 194 | If you want to get the original Mouse-1 action also inside a link, you |
| 188 | ** New function `looking-back' checks whether a regular expression matches | 195 | just need to press the Mouse-1 button a little longer than a normal |
| 189 | the text before point. Specifying the LIMIT argument bounds how far | 196 | click (i.e. press and hold the Mouse-1 button for half a second before |
| 190 | back the match can start; this is a way to keep it from taking too long. | 197 | you release it). |
| 198 | |||
| 199 | Dragging the Mouse-1 inside a link still performs the original | ||
| 200 | drag-mouse-1 action, typically copy the text. | ||
| 201 | |||
| 202 | You can customize the new Mouse-1 behaviour via the new user option | ||
| 203 | `mouse-1-click-follows-link'. | ||
| 191 | 204 | ||
| 192 | +++ | 205 | +++ |
| 193 | ** New functions `make-progress-reporter', `progress-reporter-update', | 206 | ** When the undo information of the current command gets really large |
| 194 | `progress-reporter-force-update' and `progress-reporter-done' provide | 207 | (beyond the value of `undo-outer-limit'), Emacs asks you whether to |
| 195 | a simple and efficient way of printing progress messages to the user. | 208 | discard it or keep it. |
| 209 | |||
| 210 | ** line-move-ignore-invisible now defaults to t. | ||
| 211 | |||
| 212 | ** In Outline mode, hide-body no longer hides lines at the top | ||
| 213 | of the file that precede the first header line. | ||
| 196 | 214 | ||
| 197 | +++ | 215 | +++ |
| 198 | ** In Enriched mode, `set-left-margin' and `set-right-margin' are now | 216 | ** In Enriched mode, `set-left-margin' and `set-right-margin' are now |
| @@ -1160,9 +1178,11 @@ All regular expression replacement commands now allow `\?' in the | |||
| 1160 | replacement string to specify a position where the replacement string | 1178 | replacement string to specify a position where the replacement string |
| 1161 | can be edited for each replacement. | 1179 | can be edited for each replacement. |
| 1162 | 1180 | ||
| 1163 | ** query-replace uses isearch highlighting with lazy highlighting | 1181 | ** query-replace uses isearch lazy highlighting when the new user option |
| 1164 | when the user option `query-replace-highlight' is set to `isearch'. | 1182 | `query-replace-lazy-highlight' is non-nil. |
| 1165 | If it is t, it uses old query-replace highlighting method. | 1183 | |
| 1184 | ** The current match in query-replace is highlighted in new face | ||
| 1185 | `query-replace' which by default inherits from isearch face. | ||
| 1166 | 1186 | ||
| 1167 | +++ | 1187 | +++ |
| 1168 | ** Emacs normally highlights mouse sensitive text whenever the mouse | 1188 | ** Emacs normally highlights mouse sensitive text whenever the mouse |
| @@ -1497,9 +1517,8 @@ previous mark, i.e. C-u C-SPC C-SPC C-SPC ... cycles through the | |||
| 1497 | mark ring. Use C-u C-u C-SPC to set the mark immediately after a jump. | 1517 | mark ring. Use C-u C-u C-SPC to set the mark immediately after a jump. |
| 1498 | 1518 | ||
| 1499 | ** Movement commands `beginning-of-buffer', `end-of-buffer', | 1519 | ** Movement commands `beginning-of-buffer', `end-of-buffer', |
| 1500 | `beginning-of-defun', `end-of-defun' do not set the mark if the new | 1520 | `beginning-of-defun', `end-of-defun' do not set the mark if the mark |
| 1501 | option `inhibit-mark-movement' is non-nil, or if the mark is already | 1521 | is already active in Transient Mark mode. |
| 1502 | active in Transient Mark mode. | ||
| 1503 | 1522 | ||
| 1504 | +++ | 1523 | +++ |
| 1505 | ** In the *Occur* buffer, `o' switches to it in another window, and | 1524 | ** In the *Occur* buffer, `o' switches to it in another window, and |
| @@ -2446,11 +2465,33 @@ configuration files. | |||
| 2446 | 2465 | ||
| 2447 | * Lisp Changes in Emacs 21.4 | 2466 | * Lisp Changes in Emacs 21.4 |
| 2448 | 2467 | ||
| 2468 | ** Lisp code can now test if a given buffer position is inside a | ||
| 2469 | clickable link with the new function `mouse-on-link-p'. This is the | ||
| 2470 | function used by the new `mouse-1-click-follows-link' functionality. | ||
| 2471 | |||
| 2472 | +++ | ||
| 2449 | ** (while-no-input BODY...) runs BODY, but only so long as no input | 2473 | ** (while-no-input BODY...) runs BODY, but only so long as no input |
| 2450 | arrives. If the user types or clicks anything, BODY stops as if a | 2474 | arrives. If the user types or clicks anything, BODY stops as if a |
| 2451 | quit had occurred. while-no-input returns the value of BODY, if BODY | 2475 | quit had occurred. while-no-input returns the value of BODY, if BODY |
| 2452 | finishes. It returns nil if BODY was aborted. | 2476 | finishes. It returns nil if BODY was aborted. |
| 2453 | 2477 | ||
| 2478 | +++ | ||
| 2479 | ** `set-auto-mode' now gives the interpreter magic line (if present) | ||
| 2480 | precedence over the file name. Likewise an <?xml or <!DOCTYPE declaration | ||
| 2481 | will give the buffer XML or SGML mode, based on the new var | ||
| 2482 | `magic-mode-alist'. | ||
| 2483 | |||
| 2484 | +++ | ||
| 2485 | ** New function `looking-back' checks whether a regular expression matches | ||
| 2486 | the text before point. Specifying the LIMIT argument bounds how far | ||
| 2487 | back the match can start; this is a way to keep it from taking too long. | ||
| 2488 | |||
| 2489 | +++ | ||
| 2490 | ** New functions `make-progress-reporter', `progress-reporter-update', | ||
| 2491 | `progress-reporter-force-update' and `progress-reporter-done' provide | ||
| 2492 | a simple and efficient way for a command to present progress messages | ||
| 2493 | for the user. | ||
| 2494 | |||
| 2454 | --- | 2495 | --- |
| 2455 | ** To manipulate the File menu using easy-menu, you must specify the | 2496 | ** To manipulate the File menu using easy-menu, you must specify the |
| 2456 | proper name "file". In previous Emacs versions, you had to specify | 2497 | proper name "file". In previous Emacs versions, you had to specify |
diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog index 994102f5a87..d913fbaf2c9 100644 --- a/lib-src/ChangeLog +++ b/lib-src/ChangeLog | |||
| @@ -1,3 +1,8 @@ | |||
| 1 | 2004-12-15 Andreas Schwab <schwab@suse.de> | ||
| 2 | |||
| 3 | * etags.c (main): Fix typo in conversion of LONG_OPTIONS from | ||
| 4 | preprocessing to compile time constant. | ||
| 5 | |||
| 1 | 2004-11-17 Kim F. Storm <storm@cua.dk> | 6 | 2004-11-17 Kim F. Storm <storm@cua.dk> |
| 2 | 7 | ||
| 3 | * etags.c: Undo last change. | 8 | * etags.c: Undo last change. |
diff --git a/lib-src/etags.c b/lib-src/etags.c index a6004a048a9..a06d29bfd11 100644 --- a/lib-src/etags.c +++ b/lib-src/etags.c | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* Tags file maker to go with GNU Emacs -*- coding: latin-1 -*- | 1 | /* Tags file maker to go with GNU Emacs -*- coding: latin-1 -*- |
| 2 | Copyright (C) 1984, 1987-1989, 1993-1995, 1998-2001, 2002 | 2 | Copyright (C) 1984, 1987-1989, 1993-1995, 1998-2001, 2002, 2004 |
| 3 | Free Software Foundation, Inc. and Ken Arnold | 3 | Free Software Foundation, Inc. and Ken Arnold |
| 4 | 4 | ||
| 5 | This file is not considered part of GNU Emacs. | 5 | This file is not considered part of GNU Emacs. |
| @@ -1183,7 +1183,7 @@ main (argc, argv) | |||
| 1183 | #ifdef ETAGS_REGEXPS | 1183 | #ifdef ETAGS_REGEXPS |
| 1184 | optstring = "-r:Rc:"; | 1184 | optstring = "-r:Rc:"; |
| 1185 | #endif /* ETAGS_REGEXPS */ | 1185 | #endif /* ETAGS_REGEXPS */ |
| 1186 | if (LONG_OPTIONS) | 1186 | if (!LONG_OPTIONS) |
| 1187 | optstring += 1; | 1187 | optstring += 1; |
| 1188 | optstring = concat (optstring, | 1188 | optstring = concat (optstring, |
| 1189 | "Cf:Il:o:SVhH", | 1189 | "Cf:Il:o:SVhH", |
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 6912fb5d861..7cf0678dcb0 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,3 +1,280 @@ | |||
| 1 | 2004-12-24 Thien-Thi Nguyen <ttn@gnu.org> | ||
| 2 | |||
| 3 | * progmodes/hideshow.el: Require `cl' when compiling. | ||
| 4 | Remove XEmacs and Emacs 19 compatibility. | ||
| 5 | Use `dolist' and `add-to-list' for load-time actions. | ||
| 6 | (hs-discard-overlays): Use `dolist'. | ||
| 7 | (hs-show-block): Likewise. | ||
| 8 | |||
| 9 | 2004-12-23 Dan Nicolaescu <dann@ics.uci.edu> | ||
| 10 | |||
| 11 | * faces.el (mode-line, mode-line-inactive): Use min-colors. | ||
| 12 | |||
| 13 | 2004-12-23 Thien-Thi Nguyen <ttn@gnu.org> | ||
| 14 | |||
| 15 | * progmodes/hideshow.el (hs-inside-comment-p): Fix omission bug: | ||
| 16 | When extending backwards, move outside the current comment first. | ||
| 17 | |||
| 18 | 2004-12-22 Kenichi Handa <handa@m17n.org> | ||
| 19 | |||
| 20 | * international/quail.el (quail-start-translation): Fix prompt | ||
| 21 | string for the case if input-method-use-echo-area being non-nil. | ||
| 22 | (quail-start-conversion): Likewise. | ||
| 23 | (quail-show-guidance): Don't show guidance if | ||
| 24 | input-method-use-echo-area is non-nil. | ||
| 25 | |||
| 26 | 2004-12-21 Richard M. Stallman <rms@gnu.org> | ||
| 27 | |||
| 28 | * textmodes/ispell.el (ispell-help): Bind resize-mini-windows. | ||
| 29 | |||
| 30 | 2004-12-21 Markus Rost <rost@ias.edu> | ||
| 31 | |||
| 32 | * calendar/diary-lib.el (mark-diary-entries): Set | ||
| 33 | mark-diary-entries-in-calendar only after checking for diary-file. | ||
| 34 | |||
| 35 | 2004-12-21 Richard M. Stallman <rms@gnu.org> | ||
| 36 | |||
| 37 | * faces.el (escape-glyph): Use blue against light foreground. | ||
| 38 | |||
| 39 | * simple.el (undo-outer-limit-truncate): New function. | ||
| 40 | (undo-outer-limit-function): Use undo-outer-limit-truncate. | ||
| 41 | |||
| 42 | 2004-12-21 Eli Barzilay <eli@barzilay.org> | ||
| 43 | |||
| 44 | * calculator.el: (calculator-radix-grouping-mode) | ||
| 45 | (calculator-radix-grouping-digits) | ||
| 46 | (calculator-radix-grouping-separator): | ||
| 47 | New defcustoms for the new radix grouping mode functionality. | ||
| 48 | (calculator-mode-hook): Now used in electric mode too. | ||
| 49 | (calculator-mode-map): Some new keys. | ||
| 50 | (calculator-message): New function. Some new calls. | ||
| 51 | (calculator-string-to-number): New function, | ||
| 52 | (calculator-curnum-value): Use it. | ||
| 53 | (calculator-rotate-displayer, calculator-rotate-displayer-back) | ||
| 54 | (calculator-displayer-prev, calculator-displayer-next): | ||
| 55 | Change digit group size when in radix mode. | ||
| 56 | (calculator-number-to-string): Renamed from calculator-num-to-string. | ||
| 57 | Now deals with digit grouping in radix mode. | ||
| 58 | |||
| 59 | 2004-12-20 Glenn Morris <gmorris@ast.cam.ac.uk> | ||
| 60 | |||
| 61 | * calendar/calendar.el (view-other-diary-entries): Add autoload. | ||
| 62 | * calendar/diary-lib.el (view-other-diary-entries): Use | ||
| 63 | current-prefix-arg in interactive spec. | ||
| 64 | |||
| 65 | 2004-12-19 Jay Belanger <belanger@truman.edu> | ||
| 66 | |||
| 67 | * calc/calc-aent.el (calcAlg-blank-matching-open): | ||
| 68 | Temporarily adjust the syntax of both delimiters of half-open | ||
| 69 | intervals. | ||
| 70 | |||
| 71 | 2004-12-19 Kim F. Storm <storm@cua.dk> | ||
| 72 | |||
| 73 | * mouse.el (mouse-1-click-follows-link): Doc fix. | ||
| 74 | |||
| 75 | 2004-12-18 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> | ||
| 76 | |||
| 77 | * term/mac-win.el (encoding-vector, mac-font-encoder-list) | ||
| 78 | (ccl-encode-mac-centraleurroman-font): Use centraleurroman | ||
| 79 | instead of centraleuropean as the name | ||
| 80 | |||
| 81 | 2004-12-17 Michael Albinus <michael.albinus@gmx.de> | ||
| 82 | |||
| 83 | Sync with Tramp 2.0.46. | ||
| 84 | |||
| 85 | * net/tramp.el (tramp-maybe-send-perl-script): Change order of | ||
| 86 | parameters wrt Tramp convention. | ||
| 87 | (tramp-handle-file-attributes-with-perl) | ||
| 88 | (tramp-handle-directory-files-and-attributes): Apply it. | ||
| 89 | (tramp-do-copy-or-rename-file-out-of-band): Check for existence of | ||
| 90 | `copy-program'. Reported by Zack Weinberg | ||
| 91 | <zack@codesourcery.com>. | ||
| 92 | (top): Set `edebug-form-spec' property directly rather than | ||
| 93 | calling `def-edebug-spec'. | ||
| 94 | |||
| 95 | * net/tramp-smb.el (tramp-smb-advice-PC-do-completion): Make the | ||
| 96 | advice less fragile. Surround temporary redefinition of | ||
| 97 | `substitute-in-file-name' with `unwind-protect'. Suggested by | ||
| 98 | Matt Hodges <MPHodges@member.fsf.org>. | ||
| 99 | |||
| 100 | 2004-12-17 Juri Linkov <juri@jurta.org> | ||
| 101 | |||
| 102 | * replace.el (occur-accumulate-lines, occur-engine): | ||
| 103 | Make forcing deferred font-lock fontification jit-specific. | ||
| 104 | |||
| 105 | 2004-12-17 Kim F. Storm <storm@cua.dk> | ||
| 106 | |||
| 107 | * mouse.el (mouse-1-click-follows-link): New defcustom. | ||
| 108 | (mouse-on-link-p): New function. | ||
| 109 | (mouse-drag-region-1): Implement mouse-1-click-follows-link | ||
| 110 | functionality. Map a mouse-1 click event into a mouse-2 (or | ||
| 111 | other) event when position is inside a link. | ||
| 112 | |||
| 113 | * tooltip.el (tooltip-show-help-function): Replace "mouse-2" | ||
| 114 | prefix in tooltip text with "mouse-1" when this is a link | ||
| 115 | recognized by mouse-1-click-follows-link functionality. | ||
| 116 | |||
| 117 | * help.el (describe-key): Report effective and original binding | ||
| 118 | for mouse-1 when clicked on a link. | ||
| 119 | (describe-mode): Add follow-link property to "minor-mode" button. | ||
| 120 | |||
| 121 | * help-fns.el (describe-variable): Add follow-link property to | ||
| 122 | "below" button. | ||
| 123 | |||
| 124 | * help-mode.el (help-xref): Add follow-link property. | ||
| 125 | |||
| 126 | * apropos.el (apropos-symbol, apropos-function, apropos-macro) | ||
| 127 | (apropos-command, apropos-variable, apropos-face, apropos-group) | ||
| 128 | (apropos-widget, apropos-plist): Add follow-link property. | ||
| 129 | |||
| 130 | * pcvs-defs.el (cvs-mode-map): Map follow-link to a function which | ||
| 131 | checks if position is in a filename, rather than some other | ||
| 132 | clickable item. Function looks for cvs-filename-face at position. | ||
| 133 | |||
| 134 | * wid-edit.el (widget-specify-field, widget-specify-button): | ||
| 135 | Map a :follow-link keyword into a follow-link property. | ||
| 136 | (link): Add :follow-link keyword, map to RET binding. | ||
| 137 | |||
| 138 | * dired.el (dired-mode-map): Map follow-link to mouse-face. | ||
| 139 | |||
| 140 | * progmodes/compile.el (compilation-minor-mode-map) | ||
| 141 | (compilation-button-map, compilation-mode-map): Likewise. | ||
| 142 | |||
| 143 | 2004-12-17 Thien-Thi Nguyen <ttn@gnu.org> | ||
| 144 | |||
| 145 | * play/zone.el (zone): Init `line-spacing' from orig buffer. | ||
| 146 | (zone-replace-char): Take `count' and `del-count' | ||
| 147 | instead of `direction'. Update callers. When `del-count' is | ||
| 148 | non-nil, delete that many characters, otherwise `count' characters | ||
| 149 | backwards. Insert the newly-replaced string `count' times. | ||
| 150 | (zone-fret): Handle chars w/ width greater than one. | ||
| 151 | (zone-fall-through-ws): No longer take window width `ww'. | ||
| 152 | Update callers. Add handling for `char-width' greater than one. | ||
| 153 | (zone-pgm-drip): Update var holding window-end position every cycle. | ||
| 154 | |||
| 155 | 2004-12-17 Andre Spiegel <spiegel@gnu.org> | ||
| 156 | |||
| 157 | * vc.el (vc-default-update-changelog): Use insert-file-contents, | ||
| 158 | rather than insert-file. | ||
| 159 | |||
| 160 | 2004-12-16 Jay Belanger <belanger@truman.edu> | ||
| 161 | |||
| 162 | * calc/calc-comb.el (var-RandSeed): Don't initially bind it. | ||
| 163 | (math-init-random-base, math-random-digit): Check to see if | ||
| 164 | var-RandSeed is bound. | ||
| 165 | (math-random-last): Declare it. | ||
| 166 | (math-random-digit): Don't make math-random-last local. | ||
| 167 | |||
| 168 | 2004-12-16 Thien-Thi Nguyen <ttn@gnu.org> | ||
| 169 | |||
| 170 | * play/zone.el (zone): Fix omission bug: Use a self-disabling | ||
| 171 | one-shot thunk for uniform (error, quit, normal) recovery. | ||
| 172 | Reported by John Paul Wallington. | ||
| 173 | (zone-pgm-random-life): Fix bug: | ||
| 174 | Recognize empty initial field by lack of "@" chars. | ||
| 175 | |||
| 176 | 2004-12-16 Juri Linkov <juri@jurta.org> | ||
| 177 | |||
| 178 | * help.el (function-called-at-point): | ||
| 179 | * help-fns.el (variable-at-point): As a last resort try striping | ||
| 180 | non-word prefixes and suffixes. | ||
| 181 | |||
| 182 | * descr-text.el (describe-property-list): Don't treat syntax-table | ||
| 183 | specially. Use describe-text-sexp which inserts [show] button | ||
| 184 | for large objects and handles printing errors. Sort properties | ||
| 185 | by names in alphabetical order instead of by value sizes. | ||
| 186 | Add `mouse-face' to list of properties for `describe-face' widget. | ||
| 187 | (describe-char): Mask out face-id from 19 bits of character. | ||
| 188 | Print face-id separately. | ||
| 189 | |||
| 190 | * replace.el (occur-accumulate-lines, occur-engine): | ||
| 191 | Fontify unfontified matching lines in the source buffer | ||
| 192 | before copying them. | ||
| 193 | (occur-engine): Don't put mouse-face on context lines. | ||
| 194 | (occur-next-error): Set point to line beginning/end | ||
| 195 | before searching for prev/next property to skip multiple | ||
| 196 | matches on a line (not supported by occur engine). | ||
| 197 | Remove redundant prefix-numeric-value. | ||
| 198 | |||
| 199 | 2004-12-15 Juri Linkov <juri@jurta.org> | ||
| 200 | |||
| 201 | * replace.el (match): New face. | ||
| 202 | (list-matching-lines-face): Change default from `bold' to `match'. | ||
| 203 | |||
| 204 | * progmodes/grep.el (grep-match-face): New defvar. | ||
| 205 | (grep-mode-font-lock-keywords): Use grep-match-face instead of | ||
| 206 | compilation-column-face to highlight grep matches. | ||
| 207 | |||
| 208 | * apropos.el (apropos-match-face): Change default from | ||
| 209 | `secondary-selection' to `match'. | ||
| 210 | |||
| 211 | * info-look.el (info-lookup-highlight-face): Change default from | ||
| 212 | `highlight' to `match'. | ||
| 213 | |||
| 214 | 2004-12-15 Daniel Pfeiffer <occitan@esperanto.org> | ||
| 215 | |||
| 216 | * progmodes/executable.el (executable-interpret): Eliminate | ||
| 217 | obsolete compile-internal, and switch to comint for interaction. | ||
| 218 | |||
| 219 | 2004-12-15 J.D. Smith <jdsmith@as.arizona.edu> | ||
| 220 | |||
| 221 | * progmodes/idlwave.el (idlwave-skip-multi-commands): Don't match | ||
| 222 | `&&' when skipping multiple statements on a line. | ||
| 223 | |||
| 224 | 2004-12-15 Thien-Thi Nguyen <ttn@gnu.org> | ||
| 225 | |||
| 226 | * play/zone.el (zone): Set `truncate-lines'. | ||
| 227 | Also, init `tab-width' with value from original buffer. | ||
| 228 | (zone-shift-up): Rewrite for speed. | ||
| 229 | (zone-shift-down, zone-shift-left, zone-shift-right): Likewise. | ||
| 230 | (zone-pgm-jitter): Remove redundant entries from ops vector. | ||
| 231 | (zone-exploding-remove): Reduce iteration count. | ||
| 232 | (zone-cpos): Convert to defsubst. | ||
| 233 | (zone-replace-char): New defsubst. | ||
| 234 | (zone-park/sit-for): Likewise. | ||
| 235 | (zone-fret): Take window-start arg. | ||
| 236 | Update callers. Use `zone-park/sit-for'. | ||
| 237 | (zone-fill-out-screen): Rewrite. | ||
| 238 | (zone-fall-through-ws): Likewise. Update callers. | ||
| 239 | (zone-pgm-drip): Use `zone-replace-char'. | ||
| 240 | Move var inits before while-loop. Use `zone-park/sit-for'. | ||
| 241 | (zone-pgm-random-life): Handle empty initial field. | ||
| 242 | Use `zone-replace-char' and `zone-park/sit-for'. | ||
| 243 | |||
| 244 | 2004-12-15 Juri Linkov <juri@jurta.org> | ||
| 245 | |||
| 246 | * isearch.el (isearch-update): Test isearch-lazy-highlight | ||
| 247 | before calling isearch-lazy-highlight-new-loop. | ||
| 248 | (isearch-lazy-highlight-new-loop): | ||
| 249 | Don't test isearch-lazy-highlight. | ||
| 250 | |||
| 251 | * replace.el (perform-replace): Add isearch-case-fold-search. | ||
| 252 | Use delimited-flag for isearch-regexp. | ||
| 253 | Reset isearch-lazy-highlight-last-string to force lazy | ||
| 254 | highlighting when called from isearch mode. | ||
| 255 | (query-replace-highlight): Revert defcustom type to boolean. | ||
| 256 | (query-replace-lazy-highlight): New defcustom. | ||
| 257 | (query-replace): New face. | ||
| 258 | (perform-replace, replace-highlight, replace-dehighlight): | ||
| 259 | Test query-replace-lazy-highlight instead of special value | ||
| 260 | `isearch' of query-replace-highlight. | ||
| 261 | (replace-dehighlight): Don't call isearch-dehighlight. | ||
| 262 | (replace-highlight): Don't call isearch-highlight. | ||
| 263 | Use face `query-replace' unconditionally. | ||
| 264 | |||
| 265 | 2004-12-14 Kim F. Storm <storm@cua.dk> | ||
| 266 | |||
| 267 | * simple.el (inhibit-mark-movement): Remove defvar. | ||
| 268 | (beginning-of-buffer, end-of-buffer): Don't use it. | ||
| 269 | |||
| 270 | * emacs-lisp/lisp.el (beginning-of-defun, end-of-defun): Don't | ||
| 271 | use inhibit-mark-movement. | ||
| 272 | |||
| 273 | * emulation/cua-base.el (cua--preserve-mark-commands): Remove. | ||
| 274 | (cua--undo-push-mark): Remove. | ||
| 275 | (cua--pre-command-handler, cua--post-command-handler): Don't | ||
| 276 | fiddle with inhibit-mark-movement. | ||
| 277 | |||
| 1 | 2004-12-14 Juri Linkov <juri@jurta.org> | 278 | 2004-12-14 Juri Linkov <juri@jurta.org> |
| 2 | 279 | ||
| 3 | * buff-menu.el (list-buffers-noselect): Collect internal info | 280 | * buff-menu.el (list-buffers-noselect): Collect internal info |
diff --git a/lisp/apropos.el b/lisp/apropos.el index 8bfaa3ad592..1befefe8814 100644 --- a/lisp/apropos.el +++ b/lisp/apropos.el | |||
| @@ -96,7 +96,7 @@ turns off mouse highlighting." | |||
| 96 | :group 'apropos | 96 | :group 'apropos |
| 97 | :type 'face) | 97 | :type 'face) |
| 98 | 98 | ||
| 99 | (defcustom apropos-match-face 'secondary-selection | 99 | (defcustom apropos-match-face 'match |
| 100 | "*Face for matching text in Apropos documentation/value, or nil for none. | 100 | "*Face for matching text in Apropos documentation/value, or nil for none. |
| 101 | This applies when you look for matches in the documentation or variable value | 101 | This applies when you look for matches in the documentation or variable value |
| 102 | for the regexp; the part that matches gets displayed in this font." | 102 | for the regexp; the part that matches gets displayed in this font." |
| @@ -163,6 +163,7 @@ term, and the rest of the words are alternative terms.") | |||
| 163 | (define-button-type 'apropos-symbol | 163 | (define-button-type 'apropos-symbol |
| 164 | 'face apropos-symbol-face | 164 | 'face apropos-symbol-face |
| 165 | 'help-echo "mouse-2, RET: Display more help on this symbol" | 165 | 'help-echo "mouse-2, RET: Display more help on this symbol" |
| 166 | 'follow-link t | ||
| 166 | 'action #'apropos-symbol-button-display-help | 167 | 'action #'apropos-symbol-button-display-help |
| 167 | 'skip t) | 168 | 'skip t) |
| 168 | 169 | ||
| @@ -174,19 +175,24 @@ term, and the rest of the words are alternative terms.") | |||
| 174 | 175 | ||
| 175 | (define-button-type 'apropos-function | 176 | (define-button-type 'apropos-function |
| 176 | 'apropos-label "Function" | 177 | 'apropos-label "Function" |
| 178 | 'help-echo "mouse-2, RET: Display more help on this function" | ||
| 179 | 'follow-link t | ||
| 177 | 'action (lambda (button) | 180 | 'action (lambda (button) |
| 178 | (describe-function (button-get button 'apropos-symbol))) | 181 | (describe-function (button-get button 'apropos-symbol)))) |
| 179 | 'help-echo "mouse-2, RET: Display more help on this function") | 182 | |
| 180 | (define-button-type 'apropos-macro | 183 | (define-button-type 'apropos-macro |
| 181 | 'apropos-label "Macro" | 184 | 'apropos-label "Macro" |
| 185 | 'help-echo "mouse-2, RET: Display more help on this macro" | ||
| 186 | 'follow-link t | ||
| 182 | 'action (lambda (button) | 187 | 'action (lambda (button) |
| 183 | (describe-function (button-get button 'apropos-symbol))) | 188 | (describe-function (button-get button 'apropos-symbol)))) |
| 184 | 'help-echo "mouse-2, RET: Display more help on this macro") | 189 | |
| 185 | (define-button-type 'apropos-command | 190 | (define-button-type 'apropos-command |
| 186 | 'apropos-label "Command" | 191 | 'apropos-label "Command" |
| 192 | 'help-echo "mouse-2, RET: Display more help on this command" | ||
| 193 | 'follow-link t | ||
| 187 | 'action (lambda (button) | 194 | 'action (lambda (button) |
| 188 | (describe-function (button-get button 'apropos-symbol))) | 195 | (describe-function (button-get button 'apropos-symbol)))) |
| 189 | 'help-echo "mouse-2, RET: Display more help on this command") | ||
| 190 | 196 | ||
| 191 | ;; We used to use `customize-variable-other-window' instead for a | 197 | ;; We used to use `customize-variable-other-window' instead for a |
| 192 | ;; customizable variable, but that is slow. It is better to show an | 198 | ;; customizable variable, but that is slow. It is better to show an |
| @@ -196,18 +202,21 @@ term, and the rest of the words are alternative terms.") | |||
| 196 | (define-button-type 'apropos-variable | 202 | (define-button-type 'apropos-variable |
| 197 | 'apropos-label "Variable" | 203 | 'apropos-label "Variable" |
| 198 | 'help-echo "mouse-2, RET: Display more help on this variable" | 204 | 'help-echo "mouse-2, RET: Display more help on this variable" |
| 205 | 'follow-link t | ||
| 199 | 'action (lambda (button) | 206 | 'action (lambda (button) |
| 200 | (describe-variable (button-get button 'apropos-symbol)))) | 207 | (describe-variable (button-get button 'apropos-symbol)))) |
| 201 | 208 | ||
| 202 | (define-button-type 'apropos-face | 209 | (define-button-type 'apropos-face |
| 203 | 'apropos-label "Face" | 210 | 'apropos-label "Face" |
| 204 | 'help-echo "mouse-2, RET: Display more help on this face" | 211 | 'help-echo "mouse-2, RET: Display more help on this face" |
| 212 | 'follow-link t | ||
| 205 | 'action (lambda (button) | 213 | 'action (lambda (button) |
| 206 | (describe-face (button-get button 'apropos-symbol)))) | 214 | (describe-face (button-get button 'apropos-symbol)))) |
| 207 | 215 | ||
| 208 | (define-button-type 'apropos-group | 216 | (define-button-type 'apropos-group |
| 209 | 'apropos-label "Group" | 217 | 'apropos-label "Group" |
| 210 | 'help-echo "mouse-2, RET: Display more help on this group" | 218 | 'help-echo "mouse-2, RET: Display more help on this group" |
| 219 | 'follow-link t | ||
| 211 | 'action (lambda (button) | 220 | 'action (lambda (button) |
| 212 | (customize-group-other-window | 221 | (customize-group-other-window |
| 213 | (button-get button 'apropos-symbol)))) | 222 | (button-get button 'apropos-symbol)))) |
| @@ -215,12 +224,14 @@ term, and the rest of the words are alternative terms.") | |||
| 215 | (define-button-type 'apropos-widget | 224 | (define-button-type 'apropos-widget |
| 216 | 'apropos-label "Widget" | 225 | 'apropos-label "Widget" |
| 217 | 'help-echo "mouse-2, RET: Display more help on this widget" | 226 | 'help-echo "mouse-2, RET: Display more help on this widget" |
| 227 | 'follow-link t | ||
| 218 | 'action (lambda (button) | 228 | 'action (lambda (button) |
| 219 | (widget-browse-other-window (button-get button 'apropos-symbol)))) | 229 | (widget-browse-other-window (button-get button 'apropos-symbol)))) |
| 220 | 230 | ||
| 221 | (define-button-type 'apropos-plist | 231 | (define-button-type 'apropos-plist |
| 222 | 'apropos-label "Plist" | 232 | 'apropos-label "Plist" |
| 223 | 'help-echo "mouse-2, RET: Display more help on this plist" | 233 | 'help-echo "mouse-2, RET: Display more help on this plist" |
| 234 | 'follow-link t | ||
| 224 | 'action (lambda (button) | 235 | 'action (lambda (button) |
| 225 | (apropos-describe-plist (button-get button 'apropos-symbol)))) | 236 | (apropos-describe-plist (button-get button 'apropos-symbol)))) |
| 226 | 237 | ||
diff --git a/lisp/calc/calc-aent.el b/lisp/calc/calc-aent.el index c062a822e89..2210435036c 100644 --- a/lisp/calc/calc-aent.el +++ b/lisp/calc/calc-aent.el | |||
| @@ -410,32 +410,40 @@ T means abort and give an error message.") | |||
| 410 | (exit-minibuffer)))) | 410 | (exit-minibuffer)))) |
| 411 | 411 | ||
| 412 | (defun calcAlg-blink-matching-open () | 412 | (defun calcAlg-blink-matching-open () |
| 413 | (let ((oldpos (point)) | 413 | (let ((rightpt (point)) |
| 414 | (blinkpos nil)) | 414 | (leftpt nil) |
| 415 | (rightchar (preceding-char)) | ||
| 416 | leftchar | ||
| 417 | rightsyntax | ||
| 418 | leftsyntax) | ||
| 415 | (save-excursion | 419 | (save-excursion |
| 416 | (condition-case () | 420 | (condition-case () |
| 417 | (setq blinkpos (scan-sexps oldpos -1)) | 421 | (setq leftpt (scan-sexps rightpt -1) |
| 418 | (error nil))) | 422 | leftchar (char-after leftpt)) |
| 419 | (if (and blinkpos | 423 | (error nil))) |
| 420 | (> oldpos (1+ (point-min))) | 424 | (if (and leftpt |
| 421 | (or (and (= (char-after (1- oldpos)) ?\)) | 425 | (or (and (= rightchar ?\)) |
| 422 | (= (char-after blinkpos) ?\[)) | 426 | (= leftchar ?\[)) |
| 423 | (and (= (char-after (1- oldpos)) ?\]) | 427 | (and (= rightchar ?\]) |
| 424 | (= (char-after blinkpos) ?\())) | 428 | (= leftchar ?\())) |
| 425 | (save-excursion | 429 | (save-excursion |
| 426 | (goto-char blinkpos) | 430 | (goto-char leftpt) |
| 427 | (looking-at ".+\\(\\.\\.\\|\\\\dots\\|\\\\ldots\\)"))) | 431 | (looking-at ".+\\(\\.\\.\\|\\\\dots\\|\\\\ldots\\)"))) |
| 428 | (let ((saved (aref (syntax-table) (char-after blinkpos)))) | 432 | (let ((leftsaved (aref (syntax-table) leftchar)) |
| 429 | (unwind-protect | 433 | (rightsaved (aref (syntax-table) rightchar))) |
| 430 | (progn | 434 | (unwind-protect |
| 431 | (aset (syntax-table) (char-after blinkpos) | 435 | (progn |
| 432 | (+ (logand saved 255) | 436 | (cond ((= leftchar ?\[) |
| 433 | (lsh (char-after (1- oldpos)) 8))) | 437 | (aset (syntax-table) leftchar (cons 4 ?\))) |
| 434 | (blink-matching-open)) | 438 | (aset (syntax-table) rightchar (cons 5 ?\[))) |
| 435 | (aset (syntax-table) (char-after blinkpos) saved))) | 439 | (t |
| 440 | (aset (syntax-table) leftchar (cons 4 ?\])) | ||
| 441 | (aset (syntax-table) rightchar (cons 5 ?\()))) | ||
| 442 | (blink-matching-open)) | ||
| 443 | (aset (syntax-table) leftchar leftsaved) | ||
| 444 | (aset (syntax-table) rightchar rightsaved))) | ||
| 436 | (blink-matching-open)))) | 445 | (blink-matching-open)))) |
| 437 | 446 | ||
| 438 | |||
| 439 | (defun calc-alg-digit-entry () | 447 | (defun calc-alg-digit-entry () |
| 440 | (calc-alg-entry | 448 | (calc-alg-entry |
| 441 | (cond ((eq last-command-char ?e) | 449 | (cond ((eq last-command-char ?e) |
diff --git a/lisp/calc/calc-comb.el b/lisp/calc/calc-comb.el index 24e3e5f182e..adb8fcecce6 100644 --- a/lisp/calc/calc-comb.el +++ b/lisp/calc/calc-comb.el | |||
| @@ -540,12 +540,12 @@ | |||
| 540 | ;;; Produce a random 10-bit integer, with (random) if no seed provided, | 540 | ;;; Produce a random 10-bit integer, with (random) if no seed provided, |
| 541 | ;;; or else with Numerical Recipes algorithm ran3 / Knuth 3.2.2-A. | 541 | ;;; or else with Numerical Recipes algorithm ran3 / Knuth 3.2.2-A. |
| 542 | 542 | ||
| 543 | (defvar var-RandSeed nil) | 543 | (defvar var-RandSeed) |
| 544 | (defvar math-random-cache nil) | 544 | (defvar math-random-cache nil) |
| 545 | (defvar math-gaussian-cache nil) | 545 | (defvar math-gaussian-cache nil) |
| 546 | 546 | ||
| 547 | (defun math-init-random-base () | 547 | (defun math-init-random-base () |
| 548 | (if var-RandSeed | 548 | (if (and (boundp 'var-RandSeed) var-RandSeed) |
| 549 | (if (eq (car-safe var-RandSeed) 'vec) | 549 | (if (eq (car-safe var-RandSeed) 'vec) |
| 550 | nil | 550 | nil |
| 551 | (if (Math-integerp var-RandSeed) | 551 | (if (Math-integerp var-RandSeed) |
| @@ -599,9 +599,10 @@ | |||
| 599 | ;;; Produce a random digit in the range 0..999. | 599 | ;;; Produce a random digit in the range 0..999. |
| 600 | ;;; Avoid various pitfalls that may lurk in the built-in (random) function! | 600 | ;;; Avoid various pitfalls that may lurk in the built-in (random) function! |
| 601 | ;;; Shuffling algorithm from Numerical Recipes, section 7.1. | 601 | ;;; Shuffling algorithm from Numerical Recipes, section 7.1. |
| 602 | (defvar math-random-last) | ||
| 602 | (defun math-random-digit () | 603 | (defun math-random-digit () |
| 603 | (let (i math-random-last) | 604 | (let (i) |
| 604 | (or (eq var-RandSeed math-last-RandSeed) | 605 | (or (and (boundp 'var-RandSeed) (eq var-RandSeed math-last-RandSeed)) |
| 605 | (math-init-random-base)) | 606 | (math-init-random-base)) |
| 606 | (or math-random-cache | 607 | (or math-random-cache |
| 607 | (progn | 608 | (progn |
diff --git a/lisp/calculator.el b/lisp/calculator.el index a9410ae961c..76ff4053c7f 100644 --- a/lisp/calculator.el +++ b/lisp/calculator.el | |||
| @@ -4,6 +4,7 @@ | |||
| 4 | 4 | ||
| 5 | ;; Author: Eli Barzilay <eli@barzilay.org> | 5 | ;; Author: Eli Barzilay <eli@barzilay.org> |
| 6 | ;; Keywords: tools, convenience | 6 | ;; Keywords: tools, convenience |
| 7 | ;; Time-stamp: <2002-07-13 01:14:35 eli> | ||
| 7 | 8 | ||
| 8 | ;; This file is part of GNU Emacs. | 9 | ;; This file is part of GNU Emacs. |
| 9 | 10 | ||
| @@ -100,6 +101,20 @@ at runtime." | |||
| 100 | :type 'integer | 101 | :type 'integer |
| 101 | :group 'calculator) | 102 | :group 'calculator) |
| 102 | 103 | ||
| 104 | (defcustom calculator-radix-grouping-mode t | ||
| 105 | "*Use digit grouping in radix output mode. | ||
| 106 | If this is set, chunks of `calculator-radix-grouping-digits' characters | ||
| 107 | will be separated by `calculator-radix-grouping-separator' when in radix | ||
| 108 | output mode is active (determined by `calculator-output-radix').") | ||
| 109 | |||
| 110 | (defcustom calculator-radix-grouping-digits 4 | ||
| 111 | "*The number of digits used for grouping display in radix modes. | ||
| 112 | See `calculator-radix-grouping-mode'.") | ||
| 113 | |||
| 114 | (defcustom calculator-radix-grouping-separator "'" | ||
| 115 | "*The separator used in radix grouping display. | ||
| 116 | See `calculator-radix-grouping-mode'.") | ||
| 117 | |||
| 103 | (defcustom calculator-remove-zeros t | 118 | (defcustom calculator-remove-zeros t |
| 104 | "*Non-nil value means delete all redundant zero decimal digits. | 119 | "*Non-nil value means delete all redundant zero decimal digits. |
| 105 | If this value is not t, and not nil, redundant zeros are removed except | 120 | If this value is not t, and not nil, redundant zeros are removed except |
| @@ -163,7 +178,11 @@ Otherwise show as a negative number." | |||
| 163 | :group 'calculator) | 178 | :group 'calculator) |
| 164 | 179 | ||
| 165 | (defcustom calculator-mode-hook nil | 180 | (defcustom calculator-mode-hook nil |
| 166 | "*List of hook functions for `calculator-mode' to run." | 181 | "*List of hook functions for `calculator-mode' to run. |
| 182 | Note: if `calculator-electric-mode' is on, then this hook will get | ||
| 183 | activated in the minibuffer - in that case it should not do much more | ||
| 184 | than local key settings and other effects that will change things | ||
| 185 | outside the scope of calculator related code." | ||
| 167 | :type 'hook | 186 | :type 'hook |
| 168 | :group 'calculator) | 187 | :group 'calculator) |
| 169 | 188 | ||
| @@ -387,7 +406,7 @@ Used for repeating operations in calculator-repR/L.") | |||
| 387 | "oD" "oH" "oX" "oO" "oB") | 406 | "oD" "oH" "oX" "oO" "oB") |
| 388 | (calculator-rotate-displayer "'") | 407 | (calculator-rotate-displayer "'") |
| 389 | (calculator-rotate-displayer-back "\"") | 408 | (calculator-rotate-displayer-back "\"") |
| 390 | (calculator-displayer-pref "{") | 409 | (calculator-displayer-prev "{") |
| 391 | (calculator-displayer-next "}") | 410 | (calculator-displayer-next "}") |
| 392 | (calculator-saved-up [up] [?\C-p]) | 411 | (calculator-saved-up [up] [?\C-p]) |
| 393 | (calculator-saved-down [down] [?\C-n]) | 412 | (calculator-saved-down [down] [?\C-n]) |
| @@ -399,10 +418,10 @@ Used for repeating operations in calculator-repR/L.") | |||
| 399 | (calculator-save-and-quit [(control return)] | 418 | (calculator-save-and-quit [(control return)] |
| 400 | [(control kp-enter)]) | 419 | [(control kp-enter)]) |
| 401 | (calculator-paste [insert] [(shift insert)] | 420 | (calculator-paste [insert] [(shift insert)] |
| 402 | [mouse-2]) | 421 | [paste] [mouse-2] [?\C-y]) |
| 403 | (calculator-clear [delete] [?\C-?] [?\C-d]) | 422 | (calculator-clear [delete] [?\C-?] [?\C-d]) |
| 404 | (calculator-help [?h] [??] [f1] [help]) | 423 | (calculator-help [?h] [??] [f1] [help]) |
| 405 | (calculator-copy [(control insert)]) | 424 | (calculator-copy [(control insert)] [copy]) |
| 406 | (calculator-backspace [backspace]) | 425 | (calculator-backspace [backspace]) |
| 407 | ))) | 426 | ))) |
| 408 | (while p | 427 | (while p |
| @@ -536,7 +555,7 @@ Used for repeating operations in calculator-repR/L.") | |||
| 536 | ,@(mapcar (lambda (x) (nth 1 x)) radix-selectors) | 555 | ,@(mapcar (lambda (x) (nth 1 x)) radix-selectors) |
| 537 | "---" | 556 | "---" |
| 538 | ,@(mapcar (lambda (x) (nth 2 x)) radix-selectors))) | 557 | ,@(mapcar (lambda (x) (nth 2 x)) radix-selectors))) |
| 539 | ("Decimal Dislpay" | 558 | ("Decimal Display" |
| 540 | ,@(mapcar (lambda (d) | 559 | ,@(mapcar (lambda (d) |
| 541 | (vector (cadr d) | 560 | (vector (cadr d) |
| 542 | ;; Note: inserts actual object here | 561 | ;; Note: inserts actual object here |
| @@ -611,10 +630,11 @@ The prompt indicates the current modes: | |||
| 611 | * \"=?\": (? is B/O/H) the display radix (when input is decimal); | 630 | * \"=?\": (? is B/O/H) the display radix (when input is decimal); |
| 612 | * \"??\": (? is D/B/O/H) 1st char for input radix, 2nd for display. | 631 | * \"??\": (? is D/B/O/H) 1st char for input radix, 2nd for display. |
| 613 | 632 | ||
| 614 | Also, the quote character can be used to switch display modes for | 633 | Also, the quote key can be used to switch display modes for decimal |
| 615 | decimal numbers (double-quote rotates back), and the two brace | 634 | numbers (double-quote rotates back), and the two brace characters |
| 616 | characters (\"{\" and \"}\" change display parameters that these | 635 | \(\"{\" and \"}\" change display parameters that these displayers use (if |
| 617 | displayers use (if they handle such). | 636 | they handle such). If output is using any radix mode, then these keys |
| 637 | toggle digit grouping mode and the chunk size. | ||
| 618 | 638 | ||
| 619 | Values can be saved for future reference in either a list of saved | 639 | Values can be saved for future reference in either a list of saved |
| 620 | values, or in registers. | 640 | values, or in registers. |
| @@ -683,6 +703,7 @@ See the documentation for `calculator-mode' for more information." | |||
| 683 | (setq calculator-saved-global-map (current-global-map)) | 703 | (setq calculator-saved-global-map (current-global-map)) |
| 684 | (use-local-map nil) | 704 | (use-local-map nil) |
| 685 | (use-global-map calculator-mode-map) | 705 | (use-global-map calculator-mode-map) |
| 706 | (run-hooks 'calculator-mode-hook) | ||
| 686 | (unwind-protect | 707 | (unwind-protect |
| 687 | (catch 'calculator-done | 708 | (catch 'calculator-done |
| 688 | (Electric-command-loop | 709 | (Electric-command-loop |
| @@ -717,6 +738,12 @@ See the documentation for `calculator-mode' for more information." | |||
| 717 | (if (and calculator-restart-other-mode calculator-electric-mode) | 738 | (if (and calculator-restart-other-mode calculator-electric-mode) |
| 718 | (calculator))) | 739 | (calculator))) |
| 719 | 740 | ||
| 741 | (defun calculator-message (string &rest arguments) | ||
| 742 | "Same as `message', but special handle of electric mode." | ||
| 743 | (apply 'message string arguments) | ||
| 744 | (if calculator-electric-mode | ||
| 745 | (progn (sit-for 1) (message nil)))) | ||
| 746 | |||
| 720 | ;;;--------------------------------------------------------------------- | 747 | ;;;--------------------------------------------------------------------- |
| 721 | ;;; Operators | 748 | ;;; Operators |
| 722 | 749 | ||
| @@ -818,82 +845,116 @@ The string is set not to exceed the screen width." | |||
| 818 | (concat calculator-prompt | 845 | (concat calculator-prompt |
| 819 | (substring prompt (+ trim (length calculator-prompt))))))) | 846 | (substring prompt (+ trim (length calculator-prompt))))))) |
| 820 | 847 | ||
| 821 | (defun calculator-curnum-value () | 848 | (defun calculator-string-to-number (str) |
| 822 | "Get the numeric value of the displayed number string as a float." | 849 | "Convert the given STR to a number, according to the value of |
| 850 | `calculator-input-radix'." | ||
| 823 | (if calculator-input-radix | 851 | (if calculator-input-radix |
| 824 | (let ((radix | 852 | (let ((radix |
| 825 | (cdr (assq calculator-input-radix | 853 | (cdr (assq calculator-input-radix |
| 826 | '((bin . 2) (oct . 8) (hex . 16))))) | 854 | '((bin . 2) (oct . 8) (hex . 16))))) |
| 827 | (i -1) (value 0)) | 855 | (i -1) (value 0) (new-value 0)) |
| 828 | ;; assume valid input (upcased & characters in range) | 856 | ;; assume mostly valid input (e.g., characters in range) |
| 829 | (while (< (setq i (1+ i)) (length calculator-curnum)) | 857 | (while (< (setq i (1+ i)) (length str)) |
| 830 | (setq value | 858 | (setq new-value |
| 831 | (+ (let ((ch (aref calculator-curnum i))) | 859 | (let* ((ch (upcase (aref str i))) |
| 832 | (- ch (if (<= ch ?9) ?0 (- ?A 10)))) | 860 | (n (cond ((< ch ?0) nil) |
| 833 | (* radix value)))) | 861 | ((<= ch ?9) (- ch ?0)) |
| 862 | ((< ch ?A) nil) | ||
| 863 | ((<= ch ?Z) (- ch (- ?A 10))) | ||
| 864 | (t nil)))) | ||
| 865 | (if (and n (<= 0 n) (< n radix)) | ||
| 866 | (+ n (* radix value)) | ||
| 867 | (progn | ||
| 868 | (calculator-message | ||
| 869 | "Warning: Ignoring bad input character `%c'." ch) | ||
| 870 | (sit-for 1) | ||
| 871 | value)))) | ||
| 872 | (if (if (< new-value 0) (> value 0) (< value 0)) | ||
| 873 | (calculator-message "Warning: Overflow in input.")) | ||
| 874 | (setq value new-value)) | ||
| 834 | value) | 875 | value) |
| 835 | (car | 876 | (car (read-from-string |
| 836 | (read-from-string | 877 | (cond ((equal "." str) "0.0") |
| 837 | (cond | 878 | ((string-match "[eE][+-]?$" str) (concat str "0")) |
| 838 | ((equal "." calculator-curnum) | 879 | ((string-match "\\.[0-9]\\|[eE]" str) str) |
| 839 | "0.0") | 880 | ((string-match "\\." str) |
| 840 | ((string-match "[eE][+-]?$" calculator-curnum) | 881 | ;; do this because Emacs reads "23." as an integer |
| 841 | (concat calculator-curnum "0")) | 882 | (concat str "0")) |
| 842 | ((string-match "\\.[0-9]\\|[eE]" calculator-curnum) | 883 | ((stringp str) (concat str ".0")) |
| 843 | calculator-curnum) | 884 | (t "0.0")))))) |
| 844 | ((string-match "\\." calculator-curnum) | 885 | |
| 845 | ;; do this because Emacs reads "23." as an integer | 886 | (defun calculator-curnum-value () |
| 846 | (concat calculator-curnum "0")) | 887 | "Get the numeric value of the displayed number string as a float." |
| 847 | ((stringp calculator-curnum) | 888 | (calculator-string-to-number calculator-curnum)) |
| 848 | (concat calculator-curnum ".0")) | ||
| 849 | (t "0.0")))))) | ||
| 850 | 889 | ||
| 851 | (defun calculator-rotate-displayer (&optional new-disp) | 890 | (defun calculator-rotate-displayer (&optional new-disp) |
| 852 | "Switch to the next displayer on the `calculator-displayers' list. | 891 | "Switch to the next displayer on the `calculator-displayers' list. |
| 853 | Can be called with an optional argument NEW-DISP to force rotation to | 892 | Can be called with an optional argument NEW-DISP to force rotation to |
| 854 | that argument." | 893 | that argument. |
| 894 | If radix output mode is active, toggle digit grouping." | ||
| 855 | (interactive) | 895 | (interactive) |
| 856 | (setq calculator-displayers | 896 | (cond |
| 857 | (if (and new-disp (memq new-disp calculator-displayers)) | 897 | (calculator-output-radix |
| 858 | (let ((tmp nil)) | 898 | (setq calculator-radix-grouping-mode |
| 859 | (while (not (eq (car calculator-displayers) new-disp)) | 899 | (not calculator-radix-grouping-mode)) |
| 860 | (setq tmp (cons (car calculator-displayers) tmp)) | 900 | (calculator-message |
| 861 | (setq calculator-displayers (cdr calculator-displayers))) | 901 | "Digit grouping mode %s." |
| 862 | (setq calculator-displayers | 902 | (if calculator-radix-grouping-mode "ON" "OFF"))) |
| 863 | (nconc calculator-displayers (nreverse tmp)))) | 903 | (t |
| 864 | (nconc (cdr calculator-displayers) | 904 | (setq calculator-displayers |
| 865 | (list (car calculator-displayers))))) | 905 | (if (and new-disp (memq new-disp calculator-displayers)) |
| 866 | (message "Using %s." (cadr (car calculator-displayers))) | 906 | (let ((tmp nil)) |
| 867 | (if calculator-electric-mode | 907 | (while (not (eq (car calculator-displayers) new-disp)) |
| 868 | (progn (sit-for 1) (message nil))) | 908 | (setq tmp (cons (car calculator-displayers) tmp)) |
| 909 | (setq calculator-displayers | ||
| 910 | (cdr calculator-displayers))) | ||
| 911 | (setq calculator-displayers | ||
| 912 | (nconc calculator-displayers (nreverse tmp)))) | ||
| 913 | (nconc (cdr calculator-displayers) | ||
| 914 | (list (car calculator-displayers))))) | ||
| 915 | (calculator-message | ||
| 916 | "Using %s." (cadr (car calculator-displayers))))) | ||
| 869 | (calculator-enter)) | 917 | (calculator-enter)) |
| 870 | 918 | ||
| 871 | (defun calculator-rotate-displayer-back () | 919 | (defun calculator-rotate-displayer-back () |
| 872 | "Like `calculator-rotate-displayer', but rotates modes back." | 920 | "Like `calculator-rotate-displayer', but rotates modes back. |
| 921 | If radix output mode is active, toggle digit grouping." | ||
| 873 | (interactive) | 922 | (interactive) |
| 874 | (calculator-rotate-displayer (car (last calculator-displayers)))) | 923 | (calculator-rotate-displayer (car (last calculator-displayers)))) |
| 875 | 924 | ||
| 876 | (defun calculator-displayer-prev () | 925 | (defun calculator-displayer-prev () |
| 877 | "Send the current displayer function a 'left argument. | 926 | "Send the current displayer function a 'left argument. |
| 878 | This is used to modify display arguments (if the current displayer | 927 | This is used to modify display arguments (if the current displayer |
| 879 | function supports this)." | 928 | function supports this). |
| 929 | If radix output mode is active, increase the grouping size." | ||
| 880 | (interactive) | 930 | (interactive) |
| 881 | (and (car calculator-displayers) | 931 | (if calculator-output-radix |
| 882 | (let ((disp (caar calculator-displayers))) | 932 | (progn (setq calculator-radix-grouping-digits |
| 883 | (cond ((symbolp disp) (funcall disp 'left)) | 933 | (1+ calculator-radix-grouping-digits)) |
| 884 | ((and (consp disp) (eq 'std (car disp))) | 934 | (calculator-enter)) |
| 885 | (calculator-standard-displayer 'left (cadr disp))))))) | 935 | (and (car calculator-displayers) |
| 936 | (let ((disp (caar calculator-displayers))) | ||
| 937 | (cond | ||
| 938 | ((symbolp disp) (funcall disp 'left)) | ||
| 939 | ((and (consp disp) (eq 'std (car disp))) | ||
| 940 | (calculator-standard-displayer 'left (cadr disp)))))))) | ||
| 886 | 941 | ||
| 887 | (defun calculator-displayer-next () | 942 | (defun calculator-displayer-next () |
| 888 | "Send the current displayer function a 'right argument. | 943 | "Send the current displayer function a 'right argument. |
| 889 | This is used to modify display arguments (if the current displayer | 944 | This is used to modify display arguments (if the current displayer |
| 890 | function supports this)." | 945 | function supports this). |
| 946 | If radix output mode is active, decrease the grouping size." | ||
| 891 | (interactive) | 947 | (interactive) |
| 892 | (and (car calculator-displayers) | 948 | (if calculator-output-radix |
| 893 | (let ((disp (caar calculator-displayers))) | 949 | (progn (setq calculator-radix-grouping-digits |
| 894 | (cond ((symbolp disp) (funcall disp 'right)) | 950 | (max 2 (1- calculator-radix-grouping-digits))) |
| 895 | ((and (consp disp) (eq 'std (car disp))) | 951 | (calculator-enter)) |
| 896 | (calculator-standard-displayer 'right (cadr disp))))))) | 952 | (and (car calculator-displayers) |
| 953 | (let ((disp (caar calculator-displayers))) | ||
| 954 | (cond | ||
| 955 | ((symbolp disp) (funcall disp 'right)) | ||
| 956 | ((and (consp disp) (eq 'std (car disp))) | ||
| 957 | (calculator-standard-displayer 'right (cadr disp)))))))) | ||
| 897 | 958 | ||
| 898 | (defun calculator-remove-zeros (numstr) | 959 | (defun calculator-remove-zeros (numstr) |
| 899 | "Get a number string NUMSTR and remove unnecessary zeroes. | 960 | "Get a number string NUMSTR and remove unnecessary zeroes. |
| @@ -995,7 +1056,7 @@ the 'left or 'right when one of the standard modes is used." | |||
| 995 | (calculator-remove-zeros str)) | 1056 | (calculator-remove-zeros str)) |
| 996 | "e" (number-to-string exp)))))) | 1057 | "e" (number-to-string exp)))))) |
| 997 | 1058 | ||
| 998 | (defun calculator-num-to-string (num) | 1059 | (defun calculator-number-to-string (num) |
| 999 | "Convert NUM to a displayable string." | 1060 | "Convert NUM to a displayable string." |
| 1000 | (cond | 1061 | (cond |
| 1001 | ((and (numberp num) calculator-output-radix) | 1062 | ((and (numberp num) calculator-output-radix) |
| @@ -1015,6 +1076,14 @@ the 'left or 'right when one of the standard modes is used." | |||
| 1015 | (?6 . "110") (?7 . "111"))))))) | 1076 | (?6 . "110") (?7 . "111"))))))) |
| 1016 | (string-match "^0*\\(.+\\)" s) | 1077 | (string-match "^0*\\(.+\\)" s) |
| 1017 | (setq str (match-string 1 s)))) | 1078 | (setq str (match-string 1 s)))) |
| 1079 | (if calculator-radix-grouping-mode | ||
| 1080 | (let ((d (/ (length str) calculator-radix-grouping-digits)) | ||
| 1081 | (r (% (length str) calculator-radix-grouping-digits))) | ||
| 1082 | (while (>= (setq d (1- d)) (if (zerop r) 1 0)) | ||
| 1083 | (let ((i (+ r (* d calculator-radix-grouping-digits)))) | ||
| 1084 | (setq str (concat (substring str 0 i) | ||
| 1085 | calculator-radix-grouping-separator | ||
| 1086 | (substring str i))))))) | ||
| 1018 | (upcase | 1087 | (upcase |
| 1019 | (if (and (not calculator-2s-complement) (< num 0)) | 1088 | (if (and (not calculator-2s-complement) (< num 0)) |
| 1020 | (concat "-" str) | 1089 | (concat "-" str) |
| @@ -1051,7 +1120,7 @@ If optional argument FORCE is non-nil, don't use the cached string." | |||
| 1051 | ;; customizable display for a single value | 1120 | ;; customizable display for a single value |
| 1052 | (caar calculator-displayers) | 1121 | (caar calculator-displayers) |
| 1053 | calculator-displayer))) | 1122 | calculator-displayer))) |
| 1054 | (mapconcat 'calculator-num-to-string | 1123 | (mapconcat 'calculator-number-to-string |
| 1055 | (reverse calculator-stack) | 1124 | (reverse calculator-stack) |
| 1056 | " ")) | 1125 | " ")) |
| 1057 | " " | 1126 | " " |
| @@ -1319,9 +1388,8 @@ Optional string argument KEYS will force using it as the keys entered." | |||
| 1319 | (if (not (and op (= -1 (calculator-op-arity op)))) | 1388 | (if (not (and op (= -1 (calculator-op-arity op)))) |
| 1320 | ;;(error "Binary operator without a first operand") | 1389 | ;;(error "Binary operator without a first operand") |
| 1321 | (progn | 1390 | (progn |
| 1322 | (message "Binary operator without a first operand") | 1391 | (calculator-message |
| 1323 | (if calculator-electric-mode | 1392 | "Binary operator without a first operand") |
| 1324 | (progn (sit-for 1) (message nil))) | ||
| 1325 | (throw 'op-error nil))))) | 1393 | (throw 'op-error nil))))) |
| 1326 | (calculator-reduce-stack | 1394 | (calculator-reduce-stack |
| 1327 | (cond ((eq (nth 1 op) '\() 10) | 1395 | (cond ((eq (nth 1 op) '\() 10) |
| @@ -1334,9 +1402,7 @@ Optional string argument KEYS will force using it as the keys entered." | |||
| 1334 | (not (numberp (car calculator-stack))))) | 1402 | (not (numberp (car calculator-stack))))) |
| 1335 | ;;(error "Unterminated expression") | 1403 | ;;(error "Unterminated expression") |
| 1336 | (progn | 1404 | (progn |
| 1337 | (message "Unterminated expression") | 1405 | (calculator-message "Unterminated expression") |
| 1338 | (if calculator-electric-mode | ||
| 1339 | (progn (sit-for 1) (message nil))) | ||
| 1340 | (throw 'op-error nil))) | 1406 | (throw 'op-error nil))) |
| 1341 | (setq calculator-stack (cons op calculator-stack)) | 1407 | (setq calculator-stack (cons op calculator-stack)) |
| 1342 | (calculator-reduce-stack (calculator-op-prec op)) | 1408 | (calculator-reduce-stack (calculator-op-prec op)) |
| @@ -1540,7 +1606,7 @@ Optional string argument KEYS will force using it as the keys entered." | |||
| 1540 | (setcdr as val) | 1606 | (setcdr as val) |
| 1541 | (setq calculator-registers | 1607 | (setq calculator-registers |
| 1542 | (cons (cons reg val) calculator-registers))) | 1608 | (cons (cons reg val) calculator-registers))) |
| 1543 | (message (format "[%c] := %S" reg val)))) | 1609 | (calculator-message "[%c] := %S" reg val))) |
| 1544 | 1610 | ||
| 1545 | (defun calculator-put-value (val) | 1611 | (defun calculator-put-value (val) |
| 1546 | "Paste VAL as if entered. | 1612 | "Paste VAL as if entered. |
| @@ -1552,24 +1618,26 @@ Used by `calculator-paste' and `get-register'." | |||
| 1552 | (progn | 1618 | (progn |
| 1553 | (calculator-clear-fragile) | 1619 | (calculator-clear-fragile) |
| 1554 | (setq calculator-curnum (let ((calculator-displayer "%S")) | 1620 | (setq calculator-curnum (let ((calculator-displayer "%S")) |
| 1555 | (calculator-num-to-string val))) | 1621 | (calculator-number-to-string val))) |
| 1556 | (calculator-update-display)))) | 1622 | (calculator-update-display)))) |
| 1557 | 1623 | ||
| 1558 | (defun calculator-paste () | 1624 | (defun calculator-paste () |
| 1559 | "Paste a value from the `kill-ring'." | 1625 | "Paste a value from the `kill-ring'." |
| 1560 | (interactive) | 1626 | (interactive) |
| 1561 | (calculator-put-value | 1627 | (calculator-put-value |
| 1562 | (let ((str (current-kill 0))) | 1628 | (let ((str (replace-regexp-in-string |
| 1563 | (and calculator-paste-decimals | 1629 | "^ *\\(.+[^ ]\\) *$" "\\1" (current-kill 0)))) |
| 1630 | (and (not calculator-input-radix) | ||
| 1631 | calculator-paste-decimals | ||
| 1564 | (string-match "\\([0-9]+\\)\\(\\.[0-9]+\\)?\\(e[0-9]+\\)?" | 1632 | (string-match "\\([0-9]+\\)\\(\\.[0-9]+\\)?\\(e[0-9]+\\)?" |
| 1565 | str) | 1633 | str) |
| 1566 | (or (match-string 1 str) | 1634 | (or (match-string 1 str) |
| 1567 | (match-string 2 str) | 1635 | (match-string 2 str) |
| 1568 | (match-string 3 str)) | 1636 | (match-string 3 str)) |
| 1569 | (setq str (concat (match-string 1 str) | 1637 | (setq str (concat (or (match-string 1 str) "0") |
| 1570 | (or (match-string 2 str) ".0") | 1638 | (or (match-string 2 str) ".0") |
| 1571 | (match-string 3 str)))) | 1639 | (or (match-string 3 str) "")))) |
| 1572 | (condition-case nil (car (read-from-string str)) | 1640 | (condition-case nil (calculator-string-to-number str) |
| 1573 | (error nil))))) | 1641 | (error nil))))) |
| 1574 | 1642 | ||
| 1575 | (defun calculator-get-register (reg) | 1643 | (defun calculator-get-register (reg) |
| @@ -1678,7 +1746,7 @@ To use this, apply a binary operator (evaluate it), then call this." | |||
| 1678 | (while (> x 0) | 1746 | (while (> x 0) |
| 1679 | (setq r (* r (truncate x))) | 1747 | (setq r (* r (truncate x))) |
| 1680 | (setq x (1- x))) | 1748 | (setq x (1- x))) |
| 1681 | r)) | 1749 | (+ 0.0 r))) |
| 1682 | 1750 | ||
| 1683 | (defun calculator-truncate (n) | 1751 | (defun calculator-truncate (n) |
| 1684 | "Truncate N, return 0 in case of overflow." | 1752 | "Truncate N, return 0 in case of overflow." |
diff --git a/lisp/calendar/calendar.el b/lisp/calendar/calendar.el index aa0b3005fad..88d6aee513f 100644 --- a/lisp/calendar/calendar.el +++ b/lisp/calendar/calendar.el | |||
| @@ -1660,6 +1660,13 @@ the date indicated by the cursor position in the displayed three-month | |||
| 1660 | calendar." | 1660 | calendar." |
| 1661 | t) | 1661 | t) |
| 1662 | 1662 | ||
| 1663 | (autoload 'view-other-diary-entries "diary-lib" | ||
| 1664 | "Prepare and display buffer of diary entries from an alternative diary file. | ||
| 1665 | Searches for entries that match ARG days, starting with the date indicated | ||
| 1666 | by the cursor position in the displayed three-month calendar. | ||
| 1667 | D-FILE specifies the file to use as the diary file." | ||
| 1668 | t) | ||
| 1669 | |||
| 1663 | (autoload 'calendar-sunrise-sunset "solar" | 1670 | (autoload 'calendar-sunrise-sunset "solar" |
| 1664 | "Local time of sunrise and sunset for date under cursor." | 1671 | "Local time of sunrise and sunset for date under cursor." |
| 1665 | t) | 1672 | t) |
diff --git a/lisp/calendar/diary-lib.el b/lisp/calendar/diary-lib.el index 679c4b991b6..511f82f8f2f 100644 --- a/lisp/calendar/diary-lib.el +++ b/lisp/calendar/diary-lib.el | |||
| @@ -80,7 +80,7 @@ Searches for entries that match ARG days, starting with the date indicated | |||
| 80 | by the cursor position in the displayed three-month calendar. | 80 | by the cursor position in the displayed three-month calendar. |
| 81 | D-FILE specifies the file to use as the diary file." | 81 | D-FILE specifies the file to use as the diary file." |
| 82 | (interactive | 82 | (interactive |
| 83 | (list (if arg (prefix-numeric-value arg) 1) | 83 | (list (prefix-numeric-value current-prefix-arg) |
| 84 | (read-file-name "Enter diary file name: " default-directory nil t))) | 84 | (read-file-name "Enter diary file name: " default-directory nil t))) |
| 85 | (let ((diary-file d-file)) | 85 | (let ((diary-file d-file)) |
| 86 | (view-diary-entries arg))) | 86 | (view-diary-entries arg))) |
| @@ -841,11 +841,11 @@ Each entry in the diary file visible in the calendar window is marked. | |||
| 841 | After the entries are marked, the hooks `nongregorian-diary-marking-hook' and | 841 | After the entries are marked, the hooks `nongregorian-diary-marking-hook' and |
| 842 | `mark-diary-entries-hook' are run." | 842 | `mark-diary-entries-hook' are run." |
| 843 | (interactive) | 843 | (interactive) |
| 844 | (setq mark-diary-entries-in-calendar t) | ||
| 845 | (let ((marking-diary-entries t) | 844 | (let ((marking-diary-entries t) |
| 846 | file-glob-attrs marks) | 845 | file-glob-attrs marks) |
| 847 | (save-excursion | 846 | (save-excursion |
| 848 | (set-buffer (find-file-noselect (diary-check-diary-file) t)) | 847 | (set-buffer (find-file-noselect (diary-check-diary-file) t)) |
| 848 | (setq mark-diary-entries-in-calendar t) | ||
| 849 | (message "Marking diary entries...") | 849 | (message "Marking diary entries...") |
| 850 | (setq file-glob-attrs (nth 1 (diary-pull-attrs nil '()))) | 850 | (setq file-glob-attrs (nth 1 (diary-pull-attrs nil '()))) |
| 851 | (let ((d diary-date-forms) | 851 | (let ((d diary-date-forms) |
diff --git a/lisp/descr-text.el b/lisp/descr-text.el index 0a5fa799f13..4b41c2501e5 100644 --- a/lisp/descr-text.el +++ b/lisp/descr-text.el | |||
| @@ -104,24 +104,11 @@ The `category', `face' and `font-lock-face' properties are made | |||
| 104 | into widget buttons that call `describe-text-category' or | 104 | into widget buttons that call `describe-text-category' or |
| 105 | `describe-face' when pushed." | 105 | `describe-face' when pushed." |
| 106 | ;; Sort the properties by the size of their value. | 106 | ;; Sort the properties by the size of their value. |
| 107 | (dolist (elt (sort (let ((ret nil) | 107 | (dolist (elt (sort (let (ret) |
| 108 | (key nil) | ||
| 109 | (val nil) | ||
| 110 | (len nil)) | ||
| 111 | (while properties | 108 | (while properties |
| 112 | (setq key (pop properties) | 109 | (push (list (pop properties) (pop properties)) ret)) |
| 113 | val (pop properties) | ||
| 114 | len 0) | ||
| 115 | (unless (or (memq key '(category face font-lock-face | ||
| 116 | syntax-table)) | ||
| 117 | (widgetp val)) | ||
| 118 | (setq val (pp-to-string val) | ||
| 119 | len (length val))) | ||
| 120 | (push (list key val len) ret)) | ||
| 121 | ret) | 110 | ret) |
| 122 | (lambda (a b) | 111 | (lambda (a b) (string< (nth 0 a) (nth 0 b))))) |
| 123 | (< (nth 2 a) | ||
| 124 | (nth 2 b))))) | ||
| 125 | (let ((key (nth 0 elt)) | 112 | (let ((key (nth 0 elt)) |
| 126 | (value (nth 1 elt))) | 113 | (value (nth 1 elt))) |
| 127 | (widget-insert (propertize (format " %-20s " key) | 114 | (widget-insert (propertize (format " %-20s " key) |
| @@ -131,23 +118,15 @@ into widget buttons that call `describe-text-category' or | |||
| 131 | :notify `(lambda (&rest ignore) | 118 | :notify `(lambda (&rest ignore) |
| 132 | (describe-text-category ',value)) | 119 | (describe-text-category ',value)) |
| 133 | (format "%S" value))) | 120 | (format "%S" value))) |
| 134 | ((memq key '(face font-lock-face)) | 121 | ((memq key '(face font-lock-face mouse-face)) |
| 135 | (widget-create 'link | 122 | (widget-create 'link |
| 136 | :notify `(lambda (&rest ignore) | 123 | :notify `(lambda (&rest ignore) |
| 137 | (describe-face ',value)) | 124 | (describe-face ',value)) |
| 138 | (format "%S" value))) | 125 | (format "%S" value))) |
| 139 | ((eq key 'syntax-table) | ||
| 140 | (widget-create 'push-button | ||
| 141 | :tag "show" | ||
| 142 | :action (lambda (widget &optional event) | ||
| 143 | (with-output-to-temp-buffer | ||
| 144 | "*Pp Eval Output*" | ||
| 145 | (pp (widget-get widget :value)))) | ||
| 146 | value)) | ||
| 147 | ((widgetp value) | 126 | ((widgetp value) |
| 148 | (describe-text-widget value)) | 127 | (describe-text-widget value)) |
| 149 | (t | 128 | (t |
| 150 | (widget-insert value)))) | 129 | (describe-text-sexp value)))) |
| 151 | (widget-insert "\n"))) | 130 | (widget-insert "\n"))) |
| 152 | 131 | ||
| 153 | ;;; Describe-Text Commands. | 132 | ;;; Describe-Text Commands. |
| @@ -544,10 +523,17 @@ as well as widgets, buttons, overlays, and text properties." | |||
| 544 | (dotimes (i (length disp-vector)) | 523 | (dotimes (i (length disp-vector)) |
| 545 | (setq char (aref disp-vector i)) | 524 | (setq char (aref disp-vector i)) |
| 546 | (aset disp-vector i | 525 | (aset disp-vector i |
| 547 | (cons char (describe-char-display pos char)))) | 526 | (cons char (describe-char-display |
| 527 | pos (logand char #x7ffff))))) | ||
| 548 | (format "by display table entry [%s] (see below)" | 528 | (format "by display table entry [%s] (see below)" |
| 549 | (mapconcat #'(lambda (x) (format "?%c" (car x))) | 529 | (mapconcat |
| 550 | disp-vector " "))) | 530 | #'(lambda (x) |
| 531 | (if (> (car x) #x7ffff) | ||
| 532 | (format "?%c<face-id=%s>" | ||
| 533 | (logand (car x) #x7ffff) | ||
| 534 | (lsh (car x) -19)) | ||
| 535 | (format "?%c" (car x)))) | ||
| 536 | disp-vector " "))) | ||
| 551 | (composition | 537 | (composition |
| 552 | (let ((from (car composition)) | 538 | (let ((from (car composition)) |
| 553 | (to (nth 1 composition)) | 539 | (to (nth 1 composition)) |
| @@ -618,7 +604,7 @@ as well as widgets, buttons, overlays, and text properties." | |||
| 618 | (progn | 604 | (progn |
| 619 | (insert "these fonts (glyph codes):\n") | 605 | (insert "these fonts (glyph codes):\n") |
| 620 | (dotimes (i (length disp-vector)) | 606 | (dotimes (i (length disp-vector)) |
| 621 | (insert (car (aref disp-vector i)) ?: | 607 | (insert (logand (car (aref disp-vector i)) #x7ffff) ?: |
| 622 | (propertize " " 'display '(space :align-to 5)) | 608 | (propertize " " 'display '(space :align-to 5)) |
| 623 | (if (cdr (aref disp-vector i)) | 609 | (if (cdr (aref disp-vector i)) |
| 624 | (format "%s (0x%02X)" (cadr (aref disp-vector i)) | 610 | (format "%s (0x%02X)" (cadr (aref disp-vector i)) |
diff --git a/lisp/dired.el b/lisp/dired.el index 19ea0768e2b..037bf282eda 100644 --- a/lisp/dired.el +++ b/lisp/dired.el | |||
| @@ -1104,6 +1104,7 @@ Do so according to the former subdir alist OLD-SUBDIR-ALIST." | |||
| 1104 | (let ((map (make-keymap))) | 1104 | (let ((map (make-keymap))) |
| 1105 | (suppress-keymap map) | 1105 | (suppress-keymap map) |
| 1106 | (define-key map [mouse-2] 'dired-mouse-find-file-other-window) | 1106 | (define-key map [mouse-2] 'dired-mouse-find-file-other-window) |
| 1107 | (define-key map [follow-link] 'mouse-face) | ||
| 1107 | ;; Commands to mark or flag certain categories of files | 1108 | ;; Commands to mark or flag certain categories of files |
| 1108 | (define-key map "#" 'dired-flag-auto-save-files) | 1109 | (define-key map "#" 'dired-flag-auto-save-files) |
| 1109 | (define-key map "." 'dired-clean-directory) | 1110 | (define-key map "." 'dired-clean-directory) |
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el index 2f22388d87d..9ba613b267d 100644 --- a/lisp/emacs-lisp/bytecomp.el +++ b/lisp/emacs-lisp/bytecomp.el | |||
| @@ -2178,7 +2178,7 @@ list that represents a doc string reference. | |||
| 2178 | (let ((old-load-list current-load-list) | 2178 | (let ((old-load-list current-load-list) |
| 2179 | (args (mapcar 'eval (cdr form)))) | 2179 | (args (mapcar 'eval (cdr form)))) |
| 2180 | (apply 'require args) | 2180 | (apply 'require args) |
| 2181 | ;; Detech (require 'cl) in a way that works even if cl is already loaded. | 2181 | ;; Detect (require 'cl) in a way that works even if cl is already loaded. |
| 2182 | (if (member (car args) '("cl" cl)) | 2182 | (if (member (car args) '("cl" cl)) |
| 2183 | (setq byte-compile-warnings | 2183 | (setq byte-compile-warnings |
| 2184 | (remq 'cl-functions byte-compile-warnings)))) | 2184 | (remq 'cl-functions byte-compile-warnings)))) |
diff --git a/lisp/emacs-lisp/lisp.el b/lisp/emacs-lisp/lisp.el index 090f793c700..82882d6c2b7 100644 --- a/lisp/emacs-lisp/lisp.el +++ b/lisp/emacs-lisp/lisp.el | |||
| @@ -192,8 +192,7 @@ open-parenthesis, and point ends up at the beginning of the line. | |||
| 192 | If variable `beginning-of-defun-function' is non-nil, its value | 192 | If variable `beginning-of-defun-function' is non-nil, its value |
| 193 | is called as a function to find the defun's beginning." | 193 | is called as a function to find the defun's beginning." |
| 194 | (interactive "p") | 194 | (interactive "p") |
| 195 | (or inhibit-mark-movement | 195 | (or (not (eq this-command 'beginning-of-defun)) |
| 196 | (not (eq this-command 'beginning-of-defun)) | ||
| 197 | (eq last-command 'beginning-of-defun) | 196 | (eq last-command 'beginning-of-defun) |
| 198 | (and transient-mark-mode mark-active) | 197 | (and transient-mark-mode mark-active) |
| 199 | (push-mark)) | 198 | (push-mark)) |
| @@ -245,8 +244,7 @@ matches the open-parenthesis that starts a defun; see function | |||
| 245 | If variable `end-of-defun-function' is non-nil, its value | 244 | If variable `end-of-defun-function' is non-nil, its value |
| 246 | is called as a function to find the defun's end." | 245 | is called as a function to find the defun's end." |
| 247 | (interactive "p") | 246 | (interactive "p") |
| 248 | (or inhibit-mark-movement | 247 | (or (not (eq this-command 'end-of-defun)) |
| 249 | (not (eq this-command 'end-of-defun)) | ||
| 250 | (eq last-command 'end-of-defun) | 248 | (eq last-command 'end-of-defun) |
| 251 | (and transient-mark-mode mark-active) | 249 | (and transient-mark-mode mark-active) |
| 252 | (push-mark)) | 250 | (push-mark)) |
diff --git a/lisp/emulation/cua-base.el b/lisp/emulation/cua-base.el index 523a07d26de..24adae30040 100644 --- a/lisp/emulation/cua-base.el +++ b/lisp/emulation/cua-base.el | |||
| @@ -1003,14 +1003,6 @@ Extra commands should be added to `cua-movement-commands'") | |||
| 1003 | (defvar cua-movement-commands nil | 1003 | (defvar cua-movement-commands nil |
| 1004 | "User may add additional movement commands to this list.") | 1004 | "User may add additional movement commands to this list.") |
| 1005 | 1005 | ||
| 1006 | (defvar cua--preserve-mark-commands | ||
| 1007 | '(end-of-buffer beginning-of-buffer) | ||
| 1008 | "List of movement commands that move the mark. | ||
| 1009 | CUA will preserve the previous mark position if a mark is already | ||
| 1010 | active before one of these commands is executed.") | ||
| 1011 | |||
| 1012 | (defvar cua--undo-push-mark nil) | ||
| 1013 | |||
| 1014 | ;;; Scrolling commands which does not signal errors at top/bottom | 1006 | ;;; Scrolling commands which does not signal errors at top/bottom |
| 1015 | ;;; of buffer at first key-press (instead moves to top/bottom | 1007 | ;;; of buffer at first key-press (instead moves to top/bottom |
| 1016 | ;;; of buffer). | 1008 | ;;; of buffer). |
| @@ -1100,11 +1092,7 @@ If ARG is the atom `-', scroll upward by nearly full screen." | |||
| 1100 | (aref (if window-system | 1092 | (aref (if window-system |
| 1101 | (this-single-command-raw-keys) | 1093 | (this-single-command-raw-keys) |
| 1102 | (this-single-command-keys)) 0))) | 1094 | (this-single-command-keys)) 0))) |
| 1103 | (if mark-active | 1095 | (unless mark-active |
| 1104 | (if (and (memq this-command cua--preserve-mark-commands) | ||
| 1105 | (not inhibit-mark-movement)) | ||
| 1106 | (setq cua--undo-push-mark t | ||
| 1107 | inhibit-mark-movement t)) | ||
| 1108 | (push-mark-command nil t)) | 1096 | (push-mark-command nil t)) |
| 1109 | (setq cua--last-region-shifted t) | 1097 | (setq cua--last-region-shifted t) |
| 1110 | (setq cua--explicit-region-start nil)) | 1098 | (setq cua--explicit-region-start nil)) |
| @@ -1151,9 +1139,6 @@ If ARG is the atom `-', scroll upward by nearly full screen." | |||
| 1151 | (defun cua--post-command-handler () | 1139 | (defun cua--post-command-handler () |
| 1152 | (condition-case nil | 1140 | (condition-case nil |
| 1153 | (progn | 1141 | (progn |
| 1154 | (when cua--undo-push-mark | ||
| 1155 | (setq cua--undo-push-mark nil | ||
| 1156 | inhibit-mark-movement nil)) | ||
| 1157 | (when cua--global-mark-active | 1142 | (when cua--global-mark-active |
| 1158 | (cua--global-mark-post-command)) | 1143 | (cua--global-mark-post-command)) |
| 1159 | (when (fboundp 'cua--rectangle-post-command) | 1144 | (when (fboundp 'cua--rectangle-post-command) |
diff --git a/lisp/faces.el b/lisp/faces.el index 5a7c119899d..dc4fddd8ae6 100644 --- a/lisp/faces.el +++ b/lisp/faces.el | |||
| @@ -1784,7 +1784,7 @@ created." | |||
| 1784 | 1784 | ||
| 1785 | 1785 | ||
| 1786 | (defface mode-line | 1786 | (defface mode-line |
| 1787 | '((((type x w32 mac) (class color)) | 1787 | '((((class color) (min-colors 88)) |
| 1788 | :box (:line-width -1 :style released-button) | 1788 | :box (:line-width -1 :style released-button) |
| 1789 | :background "grey75" :foreground "black") | 1789 | :background "grey75" :foreground "black") |
| 1790 | (t | 1790 | (t |
| @@ -1797,11 +1797,11 @@ created." | |||
| 1797 | (defface mode-line-inactive | 1797 | (defface mode-line-inactive |
| 1798 | '((default | 1798 | '((default |
| 1799 | :inherit mode-line) | 1799 | :inherit mode-line) |
| 1800 | (((type x w32 mac) (background light) (class color)) | 1800 | (((class color) (min-colors 88) (background light)) |
| 1801 | :weight light | 1801 | :weight light |
| 1802 | :box (:line-width -1 :color "grey75" :style nil) | 1802 | :box (:line-width -1 :color "grey75" :style nil) |
| 1803 | :foreground "grey20" :background "grey90") | 1803 | :foreground "grey20" :background "grey90") |
| 1804 | (((type x w32 mac) (background dark) (class color)) | 1804 | (((class color) (min-colors 88) (background dark) ) |
| 1805 | :weight light | 1805 | :weight light |
| 1806 | :box (:line-width -1 :color "grey40" :style nil) | 1806 | :box (:line-width -1 :color "grey40" :style nil) |
| 1807 | :foreground "grey80" :background "grey30")) | 1807 | :foreground "grey80" :background "grey30")) |
| @@ -2032,8 +2032,8 @@ Note: Other faces cannot inherit from the cursor face." | |||
| 2032 | 2032 | ||
| 2033 | (defface escape-glyph '((((background dark)) :foreground "cyan") | 2033 | (defface escape-glyph '((((background dark)) :foreground "cyan") |
| 2034 | (((type pc)) :foreground "magenta") | 2034 | (((type pc)) :foreground "magenta") |
| 2035 | (t :foreground "dark blue")) | 2035 | (t :foreground "blue")) |
| 2036 | "Face for displaying \\ and ^ in multichar glyphs." | 2036 | "Face for characters displayed as ^-sequences or \-sequences." |
| 2037 | :group 'basic-faces) | 2037 | :group 'basic-faces) |
| 2038 | 2038 | ||
| 2039 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | 2039 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index 518a9903085..bb7b8337f4c 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog | |||
| @@ -1,3 +1,9 @@ | |||
| 1 | 2004-12-17 Kim F. Storm <storm@cua.dk> | ||
| 2 | |||
| 3 | * gnus-group.el (gnus-group-mode-map): Map follow-link to mouse-face. | ||
| 4 | |||
| 5 | * gnus-sum.el (gnus-summary-mode-map): Likewise. | ||
| 6 | |||
| 1 | 2004-12-08 Stefan Monnier <monnier@iro.umontreal.ca> | 7 | 2004-12-08 Stefan Monnier <monnier@iro.umontreal.ca> |
| 2 | 8 | ||
| 3 | * gnus-art.el (gnus-narrow-to-page): Don't hardcode point-min. | 9 | * gnus-art.el (gnus-narrow-to-page): Don't hardcode point-min. |
| @@ -905,7 +911,7 @@ | |||
| 905 | * gnus-delay.el (gnus-delay-default-hour): Add :version. | 911 | * gnus-delay.el (gnus-delay-default-hour): Add :version. |
| 906 | 912 | ||
| 907 | * gnus-cite.el (gnus-cite-blank-line-after-header) | 913 | * gnus-cite.el (gnus-cite-blank-line-after-header) |
| 908 | (gnus-article-boring-faces): | 914 | (gnus-article-boring-faces): |
| 909 | 915 | ||
| 910 | * gnus-art.el (gnus-buttonized-mime-types) | 916 | * gnus-art.el (gnus-buttonized-mime-types) |
| 911 | (gnus-inhibit-mime-unbuttonizing) | 917 | (gnus-inhibit-mime-unbuttonizing) |
diff --git a/lisp/gnus/gnus-group.el b/lisp/gnus/gnus-group.el index b7d0cf9eef4..336b635a6a0 100644 --- a/lisp/gnus/gnus-group.el +++ b/lisp/gnus/gnus-group.el | |||
| @@ -591,6 +591,7 @@ simple manner.") | |||
| 591 | "\M-e" gnus-group-edit-group-method | 591 | "\M-e" gnus-group-edit-group-method |
| 592 | "^" gnus-group-enter-server-mode | 592 | "^" gnus-group-enter-server-mode |
| 593 | gnus-mouse-2 gnus-mouse-pick-group | 593 | gnus-mouse-2 gnus-mouse-pick-group |
| 594 | [follow-link] mouse-face | ||
| 594 | "<" beginning-of-buffer | 595 | "<" beginning-of-buffer |
| 595 | ">" end-of-buffer | 596 | ">" end-of-buffer |
| 596 | "\C-c\C-b" gnus-bug | 597 | "\C-c\C-b" gnus-bug |
diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el index 0971bb2a265..1f6f5437841 100644 --- a/lisp/gnus/gnus-sum.el +++ b/lisp/gnus/gnus-sum.el | |||
| @@ -1703,6 +1703,7 @@ increase the score of each group you read." | |||
| 1703 | "Q" gnus-summary-exit-no-update | 1703 | "Q" gnus-summary-exit-no-update |
| 1704 | "\C-c\C-i" gnus-info-find-node | 1704 | "\C-c\C-i" gnus-info-find-node |
| 1705 | gnus-mouse-2 gnus-mouse-pick-article | 1705 | gnus-mouse-2 gnus-mouse-pick-article |
| 1706 | [follow-link] mouse-face | ||
| 1706 | "m" gnus-summary-mail-other-window | 1707 | "m" gnus-summary-mail-other-window |
| 1707 | "a" gnus-summary-post-news | 1708 | "a" gnus-summary-post-news |
| 1708 | "i" gnus-summary-news-other-window | 1709 | "i" gnus-summary-news-other-window |
| @@ -5096,7 +5097,7 @@ If SELECT-ARTICLES, only select those articles from GROUP." | |||
| 5096 | 5097 | ||
| 5097 | (when gnus-agent | 5098 | (when gnus-agent |
| 5098 | (gnus-agent-possibly-alter-active group (gnus-active group) info) | 5099 | (gnus-agent-possibly-alter-active group (gnus-active group) info) |
| 5099 | 5100 | ||
| 5100 | (setq gnus-summary-use-undownloaded-faces | 5101 | (setq gnus-summary-use-undownloaded-faces |
| 5101 | (gnus-agent-find-parameter | 5102 | (gnus-agent-find-parameter |
| 5102 | group | 5103 | group |
| @@ -7044,7 +7045,7 @@ If optional argument UNREAD is non-nil, only unread article is selected." | |||
| 7044 | (gnus-summary-goto-subject article t))) | 7045 | (gnus-summary-goto-subject article t))) |
| 7045 | (gnus-summary-limit (append articles gnus-newsgroup-limit)) | 7046 | (gnus-summary-limit (append articles gnus-newsgroup-limit)) |
| 7046 | (gnus-summary-position-point)) | 7047 | (gnus-summary-position-point)) |
| 7047 | 7048 | ||
| 7048 | (defun gnus-summary-goto-subject (article &optional force silent) | 7049 | (defun gnus-summary-goto-subject (article &optional force silent) |
| 7049 | "Go the subject line of ARTICLE. | 7050 | "Go the subject line of ARTICLE. |
| 7050 | If FORCE, also allow jumping to articles not currently shown." | 7051 | If FORCE, also allow jumping to articles not currently shown." |
| @@ -9140,7 +9141,7 @@ ACTION can be either `move' (the default), `crosspost' or `copy'." | |||
| 9140 | 9141 | ||
| 9141 | ;;;!!!Why is this necessary? | 9142 | ;;;!!!Why is this necessary? |
| 9142 | (set-buffer gnus-summary-buffer) | 9143 | (set-buffer gnus-summary-buffer) |
| 9143 | 9144 | ||
| 9144 | (gnus-summary-goto-subject article) | 9145 | (gnus-summary-goto-subject article) |
| 9145 | (when (eq action 'move) | 9146 | (when (eq action 'move) |
| 9146 | (gnus-summary-mark-article article gnus-canceled-mark)))) | 9147 | (gnus-summary-mark-article article gnus-canceled-mark)))) |
diff --git a/lisp/help-fns.el b/lisp/help-fns.el index c06a7b1ee73..f799fbd9be7 100644 --- a/lisp/help-fns.el +++ b/lisp/help-fns.el | |||
| @@ -478,8 +478,13 @@ Return 0 if there is no such symbol." | |||
| 478 | (and (symbolp obj) (boundp obj) obj)))) | 478 | (and (symbolp obj) (boundp obj) obj)))) |
| 479 | (error nil)) | 479 | (error nil)) |
| 480 | (let* ((str (find-tag-default)) | 480 | (let* ((str (find-tag-default)) |
| 481 | (obj (if str (intern str)))) | 481 | (sym (if str (intern-soft str)))) |
| 482 | (and (symbolp obj) (boundp obj) obj)) | 482 | (if (and sym (boundp sym)) |
| 483 | sym | ||
| 484 | (save-match-data | ||
| 485 | (when (and str (string-match "\\`\\W*\\(.*?\\)\\W*\\'" str)) | ||
| 486 | (setq sym (intern-soft (match-string 1 str))) | ||
| 487 | (and (boundp sym) sym))))) | ||
| 483 | 0)) | 488 | 0)) |
| 484 | 489 | ||
| 485 | ;;;###autoload | 490 | ;;;###autoload |
| @@ -564,6 +569,7 @@ it is displayed along with the global value." | |||
| 564 | (insert " value is shown ") | 569 | (insert " value is shown ") |
| 565 | (insert-button "below" | 570 | (insert-button "below" |
| 566 | 'action help-button-cache | 571 | 'action help-button-cache |
| 572 | 'follow-link t | ||
| 567 | 'help-echo "mouse-2, RET: show value") | 573 | 'help-echo "mouse-2, RET: show value") |
| 568 | (insert ".\n\n"))) | 574 | (insert ".\n\n"))) |
| 569 | ;; Add a note for variables that have been make-var-buffer-local. | 575 | ;; Add a note for variables that have been make-var-buffer-local. |
diff --git a/lisp/help-mode.el b/lisp/help-mode.el index a2dcdf91ed8..e9d3561d251 100644 --- a/lisp/help-mode.el +++ b/lisp/help-mode.el | |||
| @@ -68,6 +68,7 @@ The format is (FUNCTION ARGS...).") | |||
| 68 | ;; Button types used by help | 68 | ;; Button types used by help |
| 69 | 69 | ||
| 70 | (define-button-type 'help-xref | 70 | (define-button-type 'help-xref |
| 71 | 'follow-link t | ||
| 71 | 'action #'help-button-action) | 72 | 'action #'help-button-action) |
| 72 | 73 | ||
| 73 | (defun help-button-action (button) | 74 | (defun help-button-action (button) |
diff --git a/lisp/help.el b/lisp/help.el index 5ec9b1f5299..f5831c9ab3f 100644 --- a/lisp/help.el +++ b/lisp/help.el | |||
| @@ -267,8 +267,13 @@ If that doesn't give a function, return nil." | |||
| 267 | (and (symbolp obj) (fboundp obj) obj)))) | 267 | (and (symbolp obj) (fboundp obj) obj)))) |
| 268 | (error nil)))) | 268 | (error nil)))) |
| 269 | (let* ((str (find-tag-default)) | 269 | (let* ((str (find-tag-default)) |
| 270 | (obj (if str (intern str)))) | 270 | (sym (if str (intern-soft str)))) |
| 271 | (and (symbolp obj) (fboundp obj) obj)))) | 271 | (if (and sym (fboundp sym)) |
| 272 | sym | ||
| 273 | (save-match-data | ||
| 274 | (when (and str (string-match "\\`\\W*\\(.*?\\)\\W*\\'" str)) | ||
| 275 | (setq sym (intern-soft (match-string 1 str))) | ||
| 276 | (and (fboundp sym) sym))))))) | ||
| 272 | 277 | ||
| 273 | 278 | ||
| 274 | ;;; `User' help functions | 279 | ;;; `User' help functions |
| @@ -609,17 +614,58 @@ the last key hit are used." | |||
| 609 | (princ "\n which is ") | 614 | (princ "\n which is ") |
| 610 | (describe-function-1 defn) | 615 | (describe-function-1 defn) |
| 611 | (when up-event | 616 | (when up-event |
| 612 | (let ((defn (or (string-key-binding up-event) (key-binding up-event)))) | 617 | (let ((ev (aref up-event 0)) |
| 618 | (descr (key-description up-event)) | ||
| 619 | (hdr "\n\n-------------- up event ---------------\n\n") | ||
| 620 | defn | ||
| 621 | mouse-1-tricky mouse-1-remapped) | ||
| 622 | (when (and (consp ev) | ||
| 623 | (eq (car ev) 'mouse-1) | ||
| 624 | (windowp window) | ||
| 625 | mouse-1-click-follows-link | ||
| 626 | (not (eq mouse-1-click-follows-link 'double)) | ||
| 627 | (with-current-buffer (window-buffer window) | ||
| 628 | (mouse-on-link-p (posn-point (event-start ev))))) | ||
| 629 | (setq mouse-1-tricky (integerp mouse-1-click-follows-link) | ||
| 630 | mouse-1-remapped (or (not mouse-1-tricky) | ||
| 631 | (> mouse-1-click-follows-link 0))) | ||
| 632 | (if mouse-1-remapped | ||
| 633 | (setcar ev 'mouse-2))) | ||
| 634 | (setq defn (or (string-key-binding up-event) (key-binding up-event))) | ||
| 613 | (unless (or (null defn) (integerp defn) (equal defn 'undefined)) | 635 | (unless (or (null defn) (integerp defn) (equal defn 'undefined)) |
| 614 | (princ "\n\n-------------- up event ---------------\n\n") | 636 | (princ (if mouse-1-tricky |
| 615 | (princ (key-description up-event)) | 637 | "\n\n----------------- up-event (short click) ----------------\n\n" |
| 638 | hdr)) | ||
| 639 | (setq hdr nil) | ||
| 640 | (princ descr) | ||
| 616 | (if (windowp window) | 641 | (if (windowp window) |
| 617 | (princ " at that spot")) | 642 | (princ " at that spot")) |
| 643 | (if mouse-1-remapped | ||
| 644 | (princ " is remapped to <mouse-2>\n which" )) | ||
| 618 | (princ " runs the command ") | 645 | (princ " runs the command ") |
| 619 | (prin1 defn) | 646 | (prin1 defn) |
| 620 | (princ "\n which is ") | 647 | (princ "\n which is ") |
| 621 | (describe-function-1 defn)))) | 648 | (describe-function-1 defn)) |
| 622 | (print-help-return-message))))))) | 649 | (when mouse-1-tricky |
| 650 | (setcar ev | ||
| 651 | (if (> mouse-1-click-follows-link 0) 'mouse-1 'mouse-2)) | ||
| 652 | (setq defn (or (string-key-binding up-event) (key-binding up-event))) | ||
| 653 | (unless (or (null defn) (integerp defn) (equal defn 'undefined)) | ||
| 654 | (princ (or hdr | ||
| 655 | "\n\n----------------- up-event (long click) ----------------\n\n")) | ||
| 656 | (princ "Pressing ") | ||
| 657 | (princ descr) | ||
| 658 | (if (windowp window) | ||
| 659 | (princ " at that spot")) | ||
| 660 | (princ (format " for longer than %d milli-seconds\n" | ||
| 661 | (abs mouse-1-click-follows-link))) | ||
| 662 | (if (not mouse-1-remapped) | ||
| 663 | (princ " remaps it to <mouse-2> which" )) | ||
| 664 | (princ " runs the command ") | ||
| 665 | (prin1 defn) | ||
| 666 | (princ "\n which is ") | ||
| 667 | (describe-function-1 defn)))) | ||
| 668 | (print-help-return-message)))))))) | ||
| 623 | 669 | ||
| 624 | 670 | ||
| 625 | (defun describe-mode (&optional buffer) | 671 | (defun describe-mode (&optional buffer) |
| @@ -692,6 +738,7 @@ whose documentation describes the minor mode." | |||
| 692 | (princ " ") | 738 | (princ " ") |
| 693 | (insert-button pretty-minor-mode | 739 | (insert-button pretty-minor-mode |
| 694 | 'action (car help-button-cache) | 740 | 'action (car help-button-cache) |
| 741 | 'follow-link t | ||
| 695 | 'help-echo "mouse-2, RET: show full information") | 742 | 'help-echo "mouse-2, RET: show full information") |
| 696 | (princ (format " minor mode (%s):\n" | 743 | (princ (format " minor mode (%s):\n" |
| 697 | (if indicator | 744 | (if indicator |
diff --git a/lisp/info-look.el b/lisp/info-look.el index 388415ec8c1..bc886f0320c 100644 --- a/lisp/info-look.el +++ b/lisp/info-look.el | |||
| @@ -47,7 +47,7 @@ Automatically becomes buffer local when set in any fashion.") | |||
| 47 | "Non-nil means pop up the Info buffer in another window." | 47 | "Non-nil means pop up the Info buffer in another window." |
| 48 | :group 'info-lookup :type 'boolean) | 48 | :group 'info-lookup :type 'boolean) |
| 49 | 49 | ||
| 50 | (defcustom info-lookup-highlight-face 'highlight | 50 | (defcustom info-lookup-highlight-face 'match |
| 51 | "Face for highlighting looked up help items. | 51 | "Face for highlighting looked up help items. |
| 52 | Setting this variable to nil disables highlighting." | 52 | Setting this variable to nil disables highlighting." |
| 53 | :group 'info-lookup :type 'face) | 53 | :group 'info-lookup :type 'face) |
diff --git a/lisp/international/quail.el b/lisp/international/quail.el index 2feaaeabf20..6aff3e4f497 100644 --- a/lisp/international/quail.el +++ b/lisp/international/quail.el | |||
| @@ -1359,11 +1359,12 @@ Return the input string." | |||
| 1359 | (while quail-translating | 1359 | (while quail-translating |
| 1360 | (set-buffer-modified-p modified-p) | 1360 | (set-buffer-modified-p modified-p) |
| 1361 | (quail-show-guidance) | 1361 | (quail-show-guidance) |
| 1362 | (let* ((keyseq (read-key-sequence | 1362 | (let* ((prompt (if input-method-use-echo-area |
| 1363 | (and input-method-use-echo-area | 1363 | (format "%s%s %s" |
| 1364 | (concat input-method-previous-message | 1364 | (or input-method-previous-message "") |
| 1365 | quail-current-str)) | 1365 | quail-current-str |
| 1366 | nil nil t)) | 1366 | quail-guidance-str))) |
| 1367 | (keyseq (read-key-sequence prompt nil nil t)) | ||
| 1367 | (cmd (lookup-key (quail-translation-keymap) keyseq))) | 1368 | (cmd (lookup-key (quail-translation-keymap) keyseq))) |
| 1368 | (if (if key | 1369 | (if (if key |
| 1369 | (and (commandp cmd) (not (eq cmd 'quail-other-command))) | 1370 | (and (commandp cmd) (not (eq cmd 'quail-other-command))) |
| @@ -1424,12 +1425,13 @@ Return the input string." | |||
| 1424 | quail-translating t) | 1425 | quail-translating t) |
| 1425 | (quail-setup-overlays nil))) | 1426 | (quail-setup-overlays nil))) |
| 1426 | (quail-show-guidance) | 1427 | (quail-show-guidance) |
| 1427 | (let* ((keyseq (read-key-sequence | 1428 | (let* ((prompt (if input-method-use-echo-area |
| 1428 | (and input-method-use-echo-area | 1429 | (format "%s%s%s %s" |
| 1429 | (concat input-method-previous-message | 1430 | (or input-method-previous-message "") |
| 1430 | quail-conversion-str | 1431 | quail-conversion-str |
| 1431 | quail-current-str)) | 1432 | quail-current-str |
| 1432 | nil nil t)) | 1433 | quail-guidance-str))) |
| 1434 | (keyseq (read-key-sequence prompt nil nil t)) | ||
| 1433 | (cmd (lookup-key (quail-conversion-keymap) keyseq))) | 1435 | (cmd (lookup-key (quail-conversion-keymap) keyseq))) |
| 1434 | (if (if key (commandp cmd) (eq cmd 'quail-self-insert-command)) | 1436 | (if (if key (commandp cmd) (eq cmd 'quail-self-insert-command)) |
| 1435 | (progn | 1437 | (progn |
| @@ -1938,10 +1940,10 @@ minibuffer and the selected frame has no other windows)." | |||
| 1938 | 1940 | ||
| 1939 | ;; Then, show the guidance. | 1941 | ;; Then, show the guidance. |
| 1940 | (when (and (quail-require-guidance-buf) | 1942 | (when (and (quail-require-guidance-buf) |
| 1943 | (not input-method-use-echo-area) | ||
| 1941 | (null unread-command-events) | 1944 | (null unread-command-events) |
| 1942 | (null unread-post-input-method-events)) | 1945 | (null unread-post-input-method-events)) |
| 1943 | (if (or (eq (selected-window) (minibuffer-window)) | 1946 | (if (eq (selected-window) (minibuffer-window)) |
| 1944 | input-method-use-echo-area) | ||
| 1945 | (if (eq (minibuffer-window) (frame-root-window)) | 1947 | (if (eq (minibuffer-window) (frame-root-window)) |
| 1946 | ;; Use another frame. It is sure that we are using some | 1948 | ;; Use another frame. It is sure that we are using some |
| 1947 | ;; window system. | 1949 | ;; window system. |
diff --git a/lisp/isearch.el b/lisp/isearch.el index b15a8f5affe..fb31c3a2587 100644 --- a/lisp/isearch.el +++ b/lisp/isearch.el | |||
| @@ -649,7 +649,7 @@ is treated as a regexp. See \\[isearch-forward] for more info." | |||
| 649 | (setq ;; quit-flag nil not for isearch-mode | 649 | (setq ;; quit-flag nil not for isearch-mode |
| 650 | isearch-adjusted nil | 650 | isearch-adjusted nil |
| 651 | isearch-yank-flag nil) | 651 | isearch-yank-flag nil) |
| 652 | (isearch-lazy-highlight-new-loop) | 652 | (if isearch-lazy-highlight (isearch-lazy-highlight-new-loop)) |
| 653 | ;; We must prevent the point moving to the end of composition when a | 653 | ;; We must prevent the point moving to the end of composition when a |
| 654 | ;; part of the composition has just been searched. | 654 | ;; part of the composition has just been searched. |
| 655 | (setq disable-point-adjustment t)) | 655 | (setq disable-point-adjustment t)) |
| @@ -2329,8 +2329,7 @@ is nil. This function is called when exiting an incremental search if | |||
| 2329 | "Cleanup any previous `isearch-lazy-highlight' loop and begin a new one. | 2329 | "Cleanup any previous `isearch-lazy-highlight' loop and begin a new one. |
| 2330 | This happens when `isearch-update' is invoked (which can cause the | 2330 | This happens when `isearch-update' is invoked (which can cause the |
| 2331 | search string to change or the window to scroll)." | 2331 | search string to change or the window to scroll)." |
| 2332 | (when (and isearch-lazy-highlight | 2332 | (when (and (null executing-kbd-macro) |
| 2333 | (null executing-kbd-macro) | ||
| 2334 | (sit-for 0) ;make sure (window-start) is credible | 2333 | (sit-for 0) ;make sure (window-start) is credible |
| 2335 | (or (not (equal isearch-string | 2334 | (or (not (equal isearch-string |
| 2336 | isearch-lazy-highlight-last-string)) | 2335 | isearch-lazy-highlight-last-string)) |
diff --git a/lisp/mouse.el b/lisp/mouse.el index b2fa71dde24..91e2e4ae5c6 100644 --- a/lisp/mouse.el +++ b/lisp/mouse.el | |||
| @@ -49,6 +49,39 @@ | |||
| 49 | :version "21.4" | 49 | :version "21.4" |
| 50 | :group 'mouse) | 50 | :group 'mouse) |
| 51 | 51 | ||
| 52 | (defcustom mouse-1-click-follows-link 350 | ||
| 53 | "Non-nil means that clicking Mouse-1 on a link follows the link. | ||
| 54 | |||
| 55 | With the default setting, an ordinary Mouse-1 click on a link | ||
| 56 | performs the same action as Mouse-2 on that link, while a longer | ||
| 57 | Mouse-1 click \(hold down the Mouse-1 button for more than 350 | ||
| 58 | milliseconds) performs the original Mouse-1 binding \(which | ||
| 59 | typically sets point where you click the mouse). | ||
| 60 | |||
| 61 | If value is an integer, the time elapsed between pressing and | ||
| 62 | releasing the mouse button determines whether to follow the link | ||
| 63 | or perform the normal Mouse-1 action (typically set point). | ||
| 64 | The absolute numeric value specifices the maximum duration of a | ||
| 65 | \"short click\" in milliseconds. A positive value means that a | ||
| 66 | short click follows the link, and a longer click performs the | ||
| 67 | normal action. A negative value gives the opposite behaviour. | ||
| 68 | |||
| 69 | If value is `double', a double click follows the link. | ||
| 70 | |||
| 71 | Otherwise, a single Mouse-1 click unconditionally follows the link. | ||
| 72 | |||
| 73 | Note that dragging the mouse never follows the link. | ||
| 74 | |||
| 75 | This feature only works in modes that specifically identify | ||
| 76 | clickable text as links, so it may not work with some external | ||
| 77 | packages. See `mouse-on-link-p' for details." | ||
| 78 | :version "21.4" | ||
| 79 | :type '(choice (const :tag "Disabled" nil) | ||
| 80 | (const :tag "Double click" double) | ||
| 81 | (number :tag "Single click time limit" :value 350) | ||
| 82 | (other :tag "Single click" t)) | ||
| 83 | :group 'mouse) | ||
| 84 | |||
| 52 | 85 | ||
| 53 | ;; Provide a mode-specific menu on a mouse button. | 86 | ;; Provide a mode-specific menu on a mouse button. |
| 54 | 87 | ||
| @@ -733,6 +766,51 @@ If the click is in the echo area, display the `*Messages*' buffer." | |||
| 733 | (run-hooks 'mouse-leave-buffer-hook) | 766 | (run-hooks 'mouse-leave-buffer-hook) |
| 734 | (mouse-drag-region-1 start-event)))) | 767 | (mouse-drag-region-1 start-event)))) |
| 735 | 768 | ||
| 769 | |||
| 770 | (defun mouse-on-link-p (pos) | ||
| 771 | "Return non-nil if POS is on a link in the current buffer. | ||
| 772 | |||
| 773 | A clickable link is identified by one of the following methods: | ||
| 774 | |||
| 775 | 1) If the character at POS has a non-nil `follow-link' text or | ||
| 776 | overlay property, the value of that property is returned. | ||
| 777 | |||
| 778 | 2) If there is a local key-binding or a keybinding at position | ||
| 779 | POS for the `follow-link' event, the binding of that event | ||
| 780 | determines whether POS is inside a link: | ||
| 781 | |||
| 782 | - If the binding is `mouse-face', POS is inside a link if there | ||
| 783 | is a non-nil `mouse-face' property at POS. Return t in this case. | ||
| 784 | |||
| 785 | - If the binding is a function, FUNC, POS is inside a link if | ||
| 786 | the call \(FUNC POS) returns non-nil. Return the return value | ||
| 787 | from that call. | ||
| 788 | |||
| 789 | - Otherwise, return the binding of the `follow-link' binding. | ||
| 790 | |||
| 791 | The return value is interpreted as follows: | ||
| 792 | |||
| 793 | - If it is a string, the mouse-1 event is translated into the | ||
| 794 | first character of the string, i.e. the action of the mouse-1 | ||
| 795 | click is the local or global binding of that character. | ||
| 796 | |||
| 797 | - If it is a vector, the mouse-1 event is translated into the | ||
| 798 | first element of that vector, i.e. the action of the mouse-1 | ||
| 799 | click is the local or global binding of that event. | ||
| 800 | |||
| 801 | - Otherwise, the mouse-1 event is translated into a mouse-2 event | ||
| 802 | at the same position." | ||
| 803 | (or (get-char-property pos 'follow-link) | ||
| 804 | (save-excursion | ||
| 805 | (goto-char pos) | ||
| 806 | (let ((b (key-binding [follow-link] nil t))) | ||
| 807 | (cond | ||
| 808 | ((eq b 'mouse-face) | ||
| 809 | (and (get-char-property pos 'mouse-face) t)) | ||
| 810 | ((functionp b) | ||
| 811 | (funcall b pos)) | ||
| 812 | (t b)))))) | ||
| 813 | |||
| 736 | (defun mouse-drag-region-1 (start-event) | 814 | (defun mouse-drag-region-1 (start-event) |
| 737 | (mouse-minibuffer-check start-event) | 815 | (mouse-minibuffer-check start-event) |
| 738 | (let* ((echo-keystrokes 0) | 816 | (let* ((echo-keystrokes 0) |
| @@ -749,6 +827,7 @@ If the click is in the echo area, display the `*Messages*' buffer." | |||
| 749 | (nth 3 bounds) | 827 | (nth 3 bounds) |
| 750 | ;; Don't count the mode line. | 828 | ;; Don't count the mode line. |
| 751 | (1- (nth 3 bounds)))) | 829 | (1- (nth 3 bounds)))) |
| 830 | on-link remap-double-click | ||
| 752 | (click-count (1- (event-click-count start-event)))) | 831 | (click-count (1- (event-click-count start-event)))) |
| 753 | (setq mouse-selection-click-count click-count) | 832 | (setq mouse-selection-click-count click-count) |
| 754 | (setq mouse-selection-click-count-buffer (current-buffer)) | 833 | (setq mouse-selection-click-count-buffer (current-buffer)) |
| @@ -758,6 +837,13 @@ If the click is in the echo area, display the `*Messages*' buffer." | |||
| 758 | (if (< (point) start-point) | 837 | (if (< (point) start-point) |
| 759 | (goto-char start-point)) | 838 | (goto-char start-point)) |
| 760 | (setq start-point (point)) | 839 | (setq start-point (point)) |
| 840 | (setq on-link (and mouse-1-click-follows-link | ||
| 841 | (mouse-on-link-p start-point))) | ||
| 842 | (setq remap-double-click (and on-link | ||
| 843 | (eq mouse-1-click-follows-link 'double) | ||
| 844 | (= click-count 1))) | ||
| 845 | (if remap-double-click ;; Don't expand mouse overlay in links | ||
| 846 | (setq click-count 0)) | ||
| 761 | (let ((range (mouse-start-end start-point start-point click-count))) | 847 | (let ((range (mouse-start-end start-point start-point click-count))) |
| 762 | (move-overlay mouse-drag-overlay (car range) (nth 1 range) | 848 | (move-overlay mouse-drag-overlay (car range) (nth 1 range) |
| 763 | (window-buffer start-window)) | 849 | (window-buffer start-window)) |
| @@ -880,6 +966,28 @@ If the click is in the echo area, display the `*Messages*' buffer." | |||
| 880 | (or end-point | 966 | (or end-point |
| 881 | (= (window-start start-window) | 967 | (= (window-start start-window) |
| 882 | start-window-start))) | 968 | start-window-start))) |
| 969 | (if (and on-link | ||
| 970 | (not end-point) | ||
| 971 | (consp event) | ||
| 972 | (or remap-double-click | ||
| 973 | (and | ||
| 974 | (not (eq mouse-1-click-follows-link 'double)) | ||
| 975 | (= click-count 0) | ||
| 976 | (= (event-click-count event) 1) | ||
| 977 | (not (input-pending-p)) | ||
| 978 | (or (not (integerp mouse-1-click-follows-link)) | ||
| 979 | (let ((t0 (posn-timestamp (event-start start-event))) | ||
| 980 | (t1 (posn-timestamp (event-end event)))) | ||
| 981 | (and (integerp t0) (integerp t1) | ||
| 982 | (if (> mouse-1-click-follows-link 0) | ||
| 983 | (<= (- t1 t0) mouse-1-click-follows-link) | ||
| 984 | (< (- t0 t1) mouse-1-click-follows-link))))) | ||
| 985 | (or (not double-click-time) | ||
| 986 | (sit-for 0 (if (integerp double-click-time) | ||
| 987 | double-click-time 500) t))))) | ||
| 988 | (if (or (vectorp on-link) (stringp on-link)) | ||
| 989 | (setq event (aref on-link 0)) | ||
| 990 | (setcar event 'mouse-2))) | ||
| 883 | (setq unread-command-events | 991 | (setq unread-command-events |
| 884 | (cons event unread-command-events))))) | 992 | (cons event unread-command-events))))) |
| 885 | (delete-overlay mouse-drag-overlay))))) | 993 | (delete-overlay mouse-drag-overlay))))) |
diff --git a/lisp/net/tramp-smb.el b/lisp/net/tramp-smb.el index 4628af88178..d0a7cf7b65f 100644 --- a/lisp/net/tramp-smb.el +++ b/lisp/net/tramp-smb.el | |||
| @@ -1105,9 +1105,11 @@ Return the difference in the format of a time value." | |||
| 1105 | ;; Do `PC-do-completion' without substitution | 1105 | ;; Do `PC-do-completion' without substitution |
| 1106 | (let* (save) | 1106 | (let* (save) |
| 1107 | (fset 'save (symbol-function 'substitute-in-file-name)) | 1107 | (fset 'save (symbol-function 'substitute-in-file-name)) |
| 1108 | (fset 'substitute-in-file-name (symbol-function 'identity)) | 1108 | (unwind-protect |
| 1109 | ad-do-it | 1109 | (progn |
| 1110 | (fset 'substitute-in-file-name (symbol-function 'save))) | 1110 | (fset 'substitute-in-file-name (symbol-function 'identity)) |
| 1111 | ad-do-it) | ||
| 1112 | (fset 'substitute-in-file-name (symbol-function 'save)))) | ||
| 1111 | 1113 | ||
| 1112 | ;; Expand "$" | 1114 | ;; Expand "$" |
| 1113 | (let* ((beg (or (and (functionp 'minibuffer-prompt-end) ; Emacs 21 | 1115 | (let* ((beg (or (and (functionp 'minibuffer-prompt-end) ; Emacs 21 |
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index b0448fd25e9..34572e98674 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el | |||
| @@ -34,7 +34,7 @@ | |||
| 34 | ;; | 34 | ;; |
| 35 | ;; Notes: | 35 | ;; Notes: |
| 36 | ;; ----- | 36 | ;; ----- |
| 37 | ;; | 37 | ;; |
| 38 | ;; This package only works for Emacs 20 and higher, and for XEmacs 21 | 38 | ;; This package only works for Emacs 20 and higher, and for XEmacs 21 |
| 39 | ;; and higher. (XEmacs 20 is missing the `with-timeout' macro. Emacs | 39 | ;; and higher. (XEmacs 20 is missing the `with-timeout' macro. Emacs |
| 40 | ;; 19 is reported to have other problems. For XEmacs 21, you need the | 40 | ;; 19 is reported to have other problems. For XEmacs 21, you need the |
| @@ -205,7 +205,7 @@ file name, the backup directory is prepended with Tramp file name prefix | |||
| 205 | 205 | ||
| 206 | gives the same backup policy for Tramp files on their hosts like the | 206 | gives the same backup policy for Tramp files on their hosts like the |
| 207 | policy for local files." | 207 | policy for local files." |
| 208 | :type '(repeat | 208 | :type '(repeat |
| 209 | (list (regexp :tag "File regexp") | 209 | (list (regexp :tag "File regexp") |
| 210 | (string :tag "Backup Dir") | 210 | (string :tag "Backup Dir") |
| 211 | (set :inline t | 211 | (set :inline t |
| @@ -506,7 +506,7 @@ This variable defaults to the value of `tramp-encoding-shell'." | |||
| 506 | (tramp-copy-args nil) | 506 | (tramp-copy-args nil) |
| 507 | (tramp-copy-keep-date-arg "-p") | 507 | (tramp-copy-keep-date-arg "-p") |
| 508 | (tramp-password-end-of-line "xy")) ;see docstring for "xy" | 508 | (tramp-password-end-of-line "xy")) ;see docstring for "xy" |
| 509 | ("fcp" | 509 | ("fcp" |
| 510 | (tramp-connection-function tramp-open-connection-rsh) | 510 | (tramp-connection-function tramp-open-connection-rsh) |
| 511 | (tramp-login-program "fsh") | 511 | (tramp-login-program "fsh") |
| 512 | (tramp-copy-program "fcp") | 512 | (tramp-copy-program "fcp") |
| @@ -633,7 +633,7 @@ variable `tramp-methods'." | |||
| 633 | ("rsh" tramp-multi-connect-rlogin "rsh %h -l %u%n") | 633 | ("rsh" tramp-multi-connect-rlogin "rsh %h -l %u%n") |
| 634 | ("remsh" tramp-multi-connect-rlogin "remsh %h -l %u%n") | 634 | ("remsh" tramp-multi-connect-rlogin "remsh %h -l %u%n") |
| 635 | ("ssh" tramp-multi-connect-rlogin "ssh %h -l %u%n") | 635 | ("ssh" tramp-multi-connect-rlogin "ssh %h -l %u%n") |
| 636 | ("ssht" tramp-multi-connect-rlogin "ssh %h -e none -t -t -l %u%n") | 636 | ("ssht" tramp-multi-connect-rlogin "ssh %h -e none -t -t -l %u%n") |
| 637 | ("su" tramp-multi-connect-su "su - %u%n") | 637 | ("su" tramp-multi-connect-su "su - %u%n") |
| 638 | ("sudo" tramp-multi-connect-su "sudo -u %u -s -p Password:%n")) | 638 | ("sudo" tramp-multi-connect-su "sudo -u %u -s -p Password:%n")) |
| 639 | "*List of connection functions for multi-hop methods. | 639 | "*List of connection functions for multi-hop methods. |
| @@ -777,7 +777,7 @@ the info pages.") | |||
| 777 | "sudo" tramp-completion-function-alist-su) | 777 | "sudo" tramp-completion-function-alist-su) |
| 778 | (tramp-set-completion-function | 778 | (tramp-set-completion-function |
| 779 | "multi" nil) | 779 | "multi" nil) |
| 780 | (tramp-set-completion-function | 780 | (tramp-set-completion-function |
| 781 | "scpx" tramp-completion-function-alist-ssh) | 781 | "scpx" tramp-completion-function-alist-ssh) |
| 782 | (tramp-set-completion-function | 782 | (tramp-set-completion-function |
| 783 | "sshx" tramp-completion-function-alist-ssh) | 783 | "sshx" tramp-completion-function-alist-ssh) |
| @@ -1536,9 +1536,9 @@ cat /tmp/tramp.$$ | |||
| 1536 | rm -f /tmp/tramp.$$ | 1536 | rm -f /tmp/tramp.$$ |
| 1537 | }" | 1537 | }" |
| 1538 | "Shell function to implement `uudecode' to standard output. | 1538 | "Shell function to implement `uudecode' to standard output. |
| 1539 | Many systems support `uudecode -o /dev/stdout' for this or | 1539 | Many systems support `uudecode -o /dev/stdout' or `uudecode -o -' |
| 1540 | `uudecode -o -' or `uudecode -p', but some systems don't, and for | 1540 | for this or `uudecode -p', but some systems don't, and for them |
| 1541 | them we have this shell function.") | 1541 | we have this shell function.") |
| 1542 | 1542 | ||
| 1543 | ;; Perl script to implement `file-attributes' in a Lisp `read'able | 1543 | ;; Perl script to implement `file-attributes' in a Lisp `read'able |
| 1544 | ;; output. If you are hacking on this, note that you get *no* output | 1544 | ;; output. If you are hacking on this, note that you get *no* output |
| @@ -1960,10 +1960,9 @@ If VAR is nil, then we bind `v' to the structure and `multi-method', | |||
| 1960 | (put 'with-parsed-tramp-file-name 'lisp-indent-function 2) | 1960 | (put 'with-parsed-tramp-file-name 'lisp-indent-function 2) |
| 1961 | ;; To be activated for debugging containing this macro | 1961 | ;; To be activated for debugging containing this macro |
| 1962 | ;; It works only when VAR is nil. Otherwise, it can be deactivated by | 1962 | ;; It works only when VAR is nil. Otherwise, it can be deactivated by |
| 1963 | ;; (def-edebug-spec with-parsed-tramp-file-name 0) | 1963 | ;; (put 'with-parsed-tramp-file-name 'edebug-form-spec 0) |
| 1964 | ;; I'm too stupid to write a precise SPEC for it. | 1964 | ;; I'm too stupid to write a precise SPEC for it. |
| 1965 | (if (functionp 'def-edebug-spec) | 1965 | (put 'with-parsed-tramp-file-name 'edebug-form-spec t) |
| 1966 | (def-edebug-spec with-parsed-tramp-file-name t)) | ||
| 1967 | 1966 | ||
| 1968 | (defmacro tramp-let-maybe (variable value &rest body) | 1967 | (defmacro tramp-let-maybe (variable value &rest body) |
| 1969 | "Let-bind VARIABLE to VALUE in BODY, but only if VARIABLE is not obsolete. | 1968 | "Let-bind VARIABLE to VALUE in BODY, but only if VARIABLE is not obsolete. |
| @@ -2056,7 +2055,7 @@ target of the symlink differ." | |||
| 2056 | (setq filename (tramp-file-name-localname | 2055 | (setq filename (tramp-file-name-localname |
| 2057 | (tramp-dissect-file-name | 2056 | (tramp-dissect-file-name |
| 2058 | (expand-file-name filename))))) | 2057 | (expand-file-name filename))))) |
| 2059 | 2058 | ||
| 2060 | ;; Right, they are on the same host, regardless of user, method, etc. | 2059 | ;; Right, they are on the same host, regardless of user, method, etc. |
| 2061 | ;; We now make the link on the remote machine. This will occur as the user | 2060 | ;; We now make the link on the remote machine. This will occur as the user |
| 2062 | ;; that FILENAME belongs to. | 2061 | ;; that FILENAME belongs to. |
| @@ -2065,7 +2064,7 @@ target of the symlink differ." | |||
| 2065 | l-multi-method l-method l-user l-host | 2064 | l-multi-method l-method l-user l-host |
| 2066 | (format "cd %s && %s -sf %s %s" | 2065 | (format "cd %s && %s -sf %s %s" |
| 2067 | cwd ln | 2066 | cwd ln |
| 2068 | filename | 2067 | filename |
| 2069 | l-localname) | 2068 | l-localname) |
| 2070 | t))))) | 2069 | t))))) |
| 2071 | 2070 | ||
| @@ -2347,9 +2346,9 @@ target of the symlink differ." | |||
| 2347 | "file attributes with perl: %s" | 2346 | "file attributes with perl: %s" |
| 2348 | (tramp-make-tramp-file-name | 2347 | (tramp-make-tramp-file-name |
| 2349 | multi-method method user host localname)) | 2348 | multi-method method user host localname)) |
| 2350 | (tramp-maybe-send-perl-script tramp-perl-file-attributes | 2349 | (tramp-maybe-send-perl-script multi-method method user host |
| 2351 | "tramp_file_attributes" | 2350 | tramp-perl-file-attributes |
| 2352 | multi-method method user host) | 2351 | "tramp_file_attributes") |
| 2353 | (tramp-send-command multi-method method user host | 2352 | (tramp-send-command multi-method method user host |
| 2354 | (format "tramp_file_attributes %s %s" | 2353 | (format "tramp_file_attributes %s %s" |
| 2355 | (tramp-shell-quote-argument localname) id-format)) | 2354 | (tramp-shell-quote-argument localname) id-format)) |
| @@ -2394,7 +2393,12 @@ target of the symlink differ." | |||
| 2394 | ;; This function makes the same assumption as | 2393 | ;; This function makes the same assumption as |
| 2395 | ;; `tramp-handle-set-visited-file-modtime'. | 2394 | ;; `tramp-handle-set-visited-file-modtime'. |
| 2396 | (defun tramp-handle-verify-visited-file-modtime (buf) | 2395 | (defun tramp-handle-verify-visited-file-modtime (buf) |
| 2397 | "Like `verify-visited-file-modtime' for tramp files." | 2396 | "Like `verify-visited-file-modtime' for tramp files. |
| 2397 | At the time `verify-visited-file-modtime' calls this function, we | ||
| 2398 | already know that the buffer is visiting a file and that | ||
| 2399 | `visited-file-modtime' does not return 0. Do not call this | ||
| 2400 | function directly, unless those two cases are already taken care | ||
| 2401 | of." | ||
| 2398 | (with-current-buffer buf | 2402 | (with-current-buffer buf |
| 2399 | ;; There is no file visiting the buffer, or the buffer has no | 2403 | ;; There is no file visiting the buffer, or the buffer has no |
| 2400 | ;; recorded last modification time. | 2404 | ;; recorded last modification time. |
| @@ -2406,7 +2410,7 @@ target of the symlink differ." | |||
| 2406 | (let* ((attr (file-attributes f)) | 2410 | (let* ((attr (file-attributes f)) |
| 2407 | (modtime (nth 5 attr)) | 2411 | (modtime (nth 5 attr)) |
| 2408 | (mt (visited-file-modtime))) | 2412 | (mt (visited-file-modtime))) |
| 2409 | 2413 | ||
| 2410 | (cond | 2414 | (cond |
| 2411 | ;; file exists, and has a known modtime. | 2415 | ;; file exists, and has a known modtime. |
| 2412 | ((and attr (not (equal modtime '(0 0)))) | 2416 | ((and attr (not (equal modtime '(0 0)))) |
| @@ -2689,9 +2693,9 @@ if the remote host can't provide the modtime." | |||
| 2689 | (save-excursion | 2693 | (save-excursion |
| 2690 | (setq directory (tramp-handle-expand-file-name directory)) | 2694 | (setq directory (tramp-handle-expand-file-name directory)) |
| 2691 | (with-parsed-tramp-file-name directory nil | 2695 | (with-parsed-tramp-file-name directory nil |
| 2692 | (tramp-maybe-send-perl-script tramp-perl-directory-files-and-attributes | 2696 | (tramp-maybe-send-perl-script multi-method method user host |
| 2693 | "tramp_directory_files_and_attributes" | 2697 | tramp-perl-directory-files-and-attributes |
| 2694 | multi-method method user host) | 2698 | "tramp_directory_files_and_attributes") |
| 2695 | (tramp-send-command multi-method method user host | 2699 | (tramp-send-command multi-method method user host |
| 2696 | (format "tramp_directory_files_and_attributes %s %s" | 2700 | (format "tramp_directory_files_and_attributes %s %s" |
| 2697 | (tramp-shell-quote-argument localname) | 2701 | (tramp-shell-quote-argument localname) |
| @@ -2753,7 +2757,7 @@ if the remote host can't provide the modtime." | |||
| 2753 | (push (buffer-substring (point) | 2757 | (push (buffer-substring (point) |
| 2754 | (tramp-line-end-position)) | 2758 | (tramp-line-end-position)) |
| 2755 | result)) | 2759 | result)) |
| 2756 | 2760 | ||
| 2757 | (tramp-send-command multi-method method user host "cd") | 2761 | (tramp-send-command multi-method method user host "cd") |
| 2758 | (tramp-wait-for-output) | 2762 | (tramp-wait-for-output) |
| 2759 | 2763 | ||
| @@ -3096,6 +3100,12 @@ be a local filename. The method used must be an out-of-band method." | |||
| 3096 | 3100 | ||
| 3097 | ;; Use an asynchronous process. By this, password can be handled. | 3101 | ;; Use an asynchronous process. By this, password can be handled. |
| 3098 | (save-excursion | 3102 | (save-excursion |
| 3103 | |||
| 3104 | ;; Check for program. | ||
| 3105 | (when (and (fboundp 'executable-find) | ||
| 3106 | (not (executable-find copy-program))) | ||
| 3107 | (error "Cannot find copy program: %s" copy-program)) | ||
| 3108 | |||
| 3099 | (set-buffer trampbuf) | 3109 | (set-buffer trampbuf) |
| 3100 | (setq tramp-current-multi-method multi-method | 3110 | (setq tramp-current-multi-method multi-method |
| 3101 | tramp-current-method method | 3111 | tramp-current-method method |
| @@ -3170,15 +3180,15 @@ This is like `dired-recursive-delete-directory' for tramp files." | |||
| 3170 | 'file-error | 3180 | 'file-error |
| 3171 | (list "Removing old file name" "no such directory" filename))) | 3181 | (list "Removing old file name" "no such directory" filename))) |
| 3172 | ;; Which is better, -r or -R? (-r works for me <daniel@danann.net>) | 3182 | ;; Which is better, -r or -R? (-r works for me <daniel@danann.net>) |
| 3173 | (tramp-send-command multi-method method user host | 3183 | (tramp-send-command multi-method method user host |
| 3174 | (format "rm -r %s" (tramp-shell-quote-argument localname))) | 3184 | (format "rm -r %s" (tramp-shell-quote-argument localname))) |
| 3175 | ;; Wait for the remote system to return to us... | 3185 | ;; Wait for the remote system to return to us... |
| 3176 | ;; This might take a while, allow it plenty of time. | 3186 | ;; This might take a while, allow it plenty of time. |
| 3177 | (tramp-wait-for-output 120) | 3187 | (tramp-wait-for-output 120) |
| 3178 | ;; Make sure that it worked... | 3188 | ;; Make sure that it worked... |
| 3179 | (and (file-exists-p filename) | 3189 | (and (file-exists-p filename) |
| 3180 | (error "Failed to recusively delete %s" filename)))) | 3190 | (error "Failed to recursively delete %s" filename)))) |
| 3181 | 3191 | ||
| 3182 | (defun tramp-handle-dired-call-process (program discard &rest arguments) | 3192 | (defun tramp-handle-dired-call-process (program discard &rest arguments) |
| 3183 | "Like `dired-call-process' for tramp files." | 3193 | "Like `dired-call-process' for tramp files." |
| 3184 | (with-parsed-tramp-file-name default-directory nil | 3194 | (with-parsed-tramp-file-name default-directory nil |
| @@ -3200,7 +3210,7 @@ This is like `dired-recursive-delete-directory' for tramp files." | |||
| 3200 | (tramp-send-command-and-check multi-method method user host nil) | 3210 | (tramp-send-command-and-check multi-method method user host nil) |
| 3201 | (tramp-send-command multi-method method user host "cd") | 3211 | (tramp-send-command multi-method method user host "cd") |
| 3202 | (tramp-wait-for-output))))) | 3212 | (tramp-wait-for-output))))) |
| 3203 | 3213 | ||
| 3204 | (defun tramp-handle-dired-compress-file (file &rest ok-flag) | 3214 | (defun tramp-handle-dired-compress-file (file &rest ok-flag) |
| 3205 | "Like `dired-compress-file' for tramp files." | 3215 | "Like `dired-compress-file' for tramp files." |
| 3206 | ;; OK-FLAG is valid for XEmacs only, but not implemented. | 3216 | ;; OK-FLAG is valid for XEmacs only, but not implemented. |
| @@ -3568,7 +3578,7 @@ This will break if COMMAND prints a newline, followed by the value of | |||
| 3568 | (when (and (numberp buffer) (zerop buffer)) | 3578 | (when (and (numberp buffer) (zerop buffer)) |
| 3569 | (error "Implementation does not handle immediate return")) | 3579 | (error "Implementation does not handle immediate return")) |
| 3570 | (when (consp buffer) (error "Implementation does not handle error files")) | 3580 | (when (consp buffer) (error "Implementation does not handle error files")) |
| 3571 | (shell-command | 3581 | (shell-command |
| 3572 | (mapconcat 'tramp-shell-quote-argument | 3582 | (mapconcat 'tramp-shell-quote-argument |
| 3573 | (cons program args) | 3583 | (cons program args) |
| 3574 | " ") | 3584 | " ") |
| @@ -4250,7 +4260,7 @@ necessary anymore." | |||
| 4250 | ;; `tramp-completion-file-name-regexp-unified' aren't different. | 4260 | ;; `tramp-completion-file-name-regexp-unified' aren't different. |
| 4251 | ;; If nil, `tramp-completion-run-real-handler' is called (i.e. forwarding to | 4261 | ;; If nil, `tramp-completion-run-real-handler' is called (i.e. forwarding to |
| 4252 | ;; `tramp-file-name-handler'). Otherwise, it takes `tramp-run-real-handler'. | 4262 | ;; `tramp-file-name-handler'). Otherwise, it takes `tramp-run-real-handler'. |
| 4253 | ;; Using `last-input-event' is a little bit risky, because completing a file | 4263 | ;; Using `last-input-event' is a little bit risky, because completing a file |
| 4254 | ;; might require loading other files, like "~/.netrc", and for them it | 4264 | ;; might require loading other files, like "~/.netrc", and for them it |
| 4255 | ;; shouldn't be decided based on that variable. On the other hand, those files | 4265 | ;; shouldn't be decided based on that variable. On the other hand, those files |
| 4256 | ;; shouldn't have partial tramp file name syntax. Maybe another variable should | 4266 | ;; shouldn't have partial tramp file name syntax. Maybe another variable should |
| @@ -4354,7 +4364,7 @@ necessary anymore." | |||
| 4354 | (funcall (nth 0 x) (nth 1 x))))) | 4364 | (funcall (nth 0 x) (nth 1 x))))) |
| 4355 | (tramp-get-completion-function m)) | 4365 | (tramp-get-completion-function m)) |
| 4356 | 4366 | ||
| 4357 | (setq result (append result | 4367 | (setq result (append result |
| 4358 | (mapcar | 4368 | (mapcar |
| 4359 | (lambda (x) | 4369 | (lambda (x) |
| 4360 | (tramp-get-completion-user-host | 4370 | (tramp-get-completion-user-host |
| @@ -4395,7 +4405,7 @@ necessary anymore." | |||
| 4395 | ;; [nil nil "x" nil nil] | 4405 | ;; [nil nil "x" nil nil] |
| 4396 | ;; [nil "x" nil nil nil] | 4406 | ;; [nil "x" nil nil nil] |
| 4397 | 4407 | ||
| 4398 | ;; "/x:" "/x:y" "/x:y:" | 4408 | ;; "/x:" "/x:y" "/x:y:" |
| 4399 | ;; [nil nil nil "x" ""] [nil nil nil "x" "y"] [nil "x" nil "y" ""] | 4409 | ;; [nil nil nil "x" ""] [nil nil nil "x" "y"] [nil "x" nil "y" ""] |
| 4400 | ;; "/[x/" "/[x/y" | 4410 | ;; "/[x/" "/[x/y" |
| 4401 | ;; [nil "x" nil "" nil] [nil "x" nil "y" nil] | 4411 | ;; [nil "x" nil "" nil] [nil "x" nil "y" nil] |
| @@ -4769,7 +4779,7 @@ User may be nil." | |||
| 4769 | 4779 | ||
| 4770 | ;;; Internal Functions: | 4780 | ;;; Internal Functions: |
| 4771 | 4781 | ||
| 4772 | (defun tramp-maybe-send-perl-script (script name multi-method method user host) | 4782 | (defun tramp-maybe-send-perl-script (multi-method method user host script name) |
| 4773 | "Define in remote shell function NAME implemented as perl SCRIPT. | 4783 | "Define in remote shell function NAME implemented as perl SCRIPT. |
| 4774 | Only send the definition if it has not already been done. | 4784 | Only send the definition if it has not already been done. |
| 4775 | Function may have 0-3 parameters." | 4785 | Function may have 0-3 parameters." |
| @@ -4864,7 +4874,7 @@ TIME is an Emacs internal time value as returned by `current-time'." | |||
| 4864 | "touch" nil (current-buffer) nil "-t" touch-time file)) | 4874 | "touch" nil (current-buffer) nil "-t" touch-time file)) |
| 4865 | (pop-to-buffer (current-buffer)) | 4875 | (pop-to-buffer (current-buffer)) |
| 4866 | (error "tramp-touch: touch failed")))))) | 4876 | (error "tramp-touch: touch failed")))))) |
| 4867 | 4877 | ||
| 4868 | (defun tramp-buffer-name (multi-method method user host) | 4878 | (defun tramp-buffer-name (multi-method method user host) |
| 4869 | "A name for the connection buffer for USER at HOST using METHOD." | 4879 | "A name for the connection buffer for USER at HOST using METHOD." |
| 4870 | (if multi-method | 4880 | (if multi-method |
| @@ -5022,7 +5032,7 @@ file exists and nonzero exit status otherwise." | |||
| 5022 | (file-exists-p existing) | 5032 | (file-exists-p existing) |
| 5023 | (not (file-exists-p nonexisting)))) | 5033 | (not (file-exists-p nonexisting)))) |
| 5024 | (error "Couldn't find command to check if file exists.")))) | 5034 | (error "Couldn't find command to check if file exists.")))) |
| 5025 | 5035 | ||
| 5026 | 5036 | ||
| 5027 | ;; CCC test ksh or bash found for tilde expansion? | 5037 | ;; CCC test ksh or bash found for tilde expansion? |
| 5028 | (defun tramp-find-shell (multi-method method user host) | 5038 | (defun tramp-find-shell (multi-method method user host) |
| @@ -5121,9 +5131,9 @@ Returns nil if none was found, else the command is returned." | |||
| 5121 | (tramp-check-ls-commands multi-method method user host "gnuls" tramp-remote-path) | 5131 | (tramp-check-ls-commands multi-method method user host "gnuls" tramp-remote-path) |
| 5122 | (tramp-check-ls-commands multi-method method user host "gls" tramp-remote-path))) | 5132 | (tramp-check-ls-commands multi-method method user host "gls" tramp-remote-path))) |
| 5123 | 5133 | ||
| 5124 | ;; ------------------------------------------------------------ | 5134 | ;; ------------------------------------------------------------ |
| 5125 | ;; -- Functions for establishing connection -- | 5135 | ;; -- Functions for establishing connection -- |
| 5126 | ;; ------------------------------------------------------------ | 5136 | ;; ------------------------------------------------------------ |
| 5127 | 5137 | ||
| 5128 | ;; The following functions are actions to be taken when seeing certain | 5138 | ;; The following functions are actions to be taken when seeing certain |
| 5129 | ;; prompts from the remote host. See the variable | 5139 | ;; prompts from the remote host. See the variable |
| @@ -5364,7 +5374,7 @@ Maybe the different regular expressions need to be tuned. | |||
| 5364 | (when multi-method | 5374 | (when multi-method |
| 5365 | (error "Cannot multi-connect using telnet connection method")) | 5375 | (error "Cannot multi-connect using telnet connection method")) |
| 5366 | (tramp-pre-connection multi-method method user host) | 5376 | (tramp-pre-connection multi-method method user host) |
| 5367 | (tramp-message 7 "Opening connection for %s@%s using %s..." | 5377 | (tramp-message 7 "Opening connection for %s@%s using %s..." |
| 5368 | (or user (user-login-name)) host method) | 5378 | (or user (user-login-name)) host method) |
| 5369 | (let ((process-environment (copy-sequence process-environment))) | 5379 | (let ((process-environment (copy-sequence process-environment))) |
| 5370 | (setenv "TERM" tramp-terminal-type) | 5380 | (setenv "TERM" tramp-terminal-type) |
| @@ -5398,7 +5408,7 @@ Maybe the different regular expressions need to be tuned. | |||
| 5398 | p multi-method method user host) | 5408 | p multi-method method user host) |
| 5399 | (tramp-post-connection multi-method method user host))))) | 5409 | (tramp-post-connection multi-method method user host))))) |
| 5400 | 5410 | ||
| 5401 | 5411 | ||
| 5402 | (defun tramp-open-connection-rsh (multi-method method user host) | 5412 | (defun tramp-open-connection-rsh (multi-method method user host) |
| 5403 | "Open a connection using an rsh METHOD. | 5413 | "Open a connection using an rsh METHOD. |
| 5404 | This starts the command `rsh HOST -l USER'[*], then waits for a remote | 5414 | This starts the command `rsh HOST -l USER'[*], then waits for a remote |
| @@ -5423,7 +5433,7 @@ arguments, and xx will be used as the host name to connect to. | |||
| 5423 | (error "Cannot multi-connect using rsh connection method")) | 5433 | (error "Cannot multi-connect using rsh connection method")) |
| 5424 | (tramp-pre-connection multi-method method user host) | 5434 | (tramp-pre-connection multi-method method user host) |
| 5425 | (if (and user (not (string= user ""))) | 5435 | (if (and user (not (string= user ""))) |
| 5426 | (tramp-message 7 "Opening connection for %s@%s using %s..." | 5436 | (tramp-message 7 "Opening connection for %s@%s using %s..." |
| 5427 | user host method) | 5437 | user host method) |
| 5428 | (tramp-message 7 "Opening connection at %s using %s..." host method)) | 5438 | (tramp-message 7 "Opening connection at %s using %s..." host method)) |
| 5429 | (let ((process-environment (copy-sequence process-environment)) | 5439 | (let ((process-environment (copy-sequence process-environment)) |
| @@ -5452,9 +5462,9 @@ arguments, and xx will be used as the host name to connect to. | |||
| 5452 | (> emacs-major-version 20)) | 5462 | (> emacs-major-version 20)) |
| 5453 | tramp-dos-coding-system)) | 5463 | tramp-dos-coding-system)) |
| 5454 | (p (if (and user (not (string= user ""))) | 5464 | (p (if (and user (not (string= user ""))) |
| 5455 | (apply #'start-process bufnam buf login-program | 5465 | (apply #'start-process bufnam buf login-program |
| 5456 | real-host "-l" user login-args) | 5466 | real-host "-l" user login-args) |
| 5457 | (apply #'start-process bufnam buf login-program | 5467 | (apply #'start-process bufnam buf login-program |
| 5458 | real-host login-args))) | 5468 | real-host login-args))) |
| 5459 | (found nil)) | 5469 | (found nil)) |
| 5460 | (tramp-set-process-query-on-exit-flag p nil) | 5470 | (tramp-set-process-query-on-exit-flag p nil) |
| @@ -5524,10 +5534,10 @@ prompt than you do, so it is not at all unlikely that the variable | |||
| 5524 | tramp-actions-before-shell) | 5534 | tramp-actions-before-shell) |
| 5525 | (tramp-open-connection-setup-interactive-shell | 5535 | (tramp-open-connection-setup-interactive-shell |
| 5526 | p multi-method method user host) | 5536 | p multi-method method user host) |
| 5527 | (tramp-post-connection multi-method method | 5537 | (tramp-post-connection multi-method method |
| 5528 | user host))))) | 5538 | user host))))) |
| 5529 | 5539 | ||
| 5530 | ;; HHH: Not Changed. Multi method. It is not clear to me how this can | 5540 | ;; HHH: Not Changed. Multi method. It is not clear to me how this can |
| 5531 | ;; handle not giving a user name in the "file name". | 5541 | ;; handle not giving a user name in the "file name". |
| 5532 | ;; | 5542 | ;; |
| 5533 | ;; This is more difficult than for the single-hop method. In the | 5543 | ;; This is more difficult than for the single-hop method. In the |
| @@ -5597,7 +5607,7 @@ log in as u2 to h2." | |||
| 5597 | (tramp-post-connection multi-method method user host))))) | 5607 | (tramp-post-connection multi-method method user host))))) |
| 5598 | 5608 | ||
| 5599 | ;; HHH: Changed. Multi method. Don't know how to handle this in the case | 5609 | ;; HHH: Changed. Multi method. Don't know how to handle this in the case |
| 5600 | ;; of no user name provided. Hack to make it work as it did before: | 5610 | ;; of no user name provided. Hack to make it work as it did before: |
| 5601 | ;; changed `user' to `(or user (user-login-name))' in the places where | 5611 | ;; changed `user' to `(or user (user-login-name))' in the places where |
| 5602 | ;; the value is actually used. | 5612 | ;; the value is actually used. |
| 5603 | (defun tramp-multi-connect-telnet (p method user host command) | 5613 | (defun tramp-multi-connect-telnet (p method user host command) |
| @@ -5619,8 +5629,8 @@ If USER is nil, uses the return value of (user-login-name) instead." | |||
| 5619 | (tramp-process-multi-actions p method user host | 5629 | (tramp-process-multi-actions p method user host |
| 5620 | tramp-multi-actions))) | 5630 | tramp-multi-actions))) |
| 5621 | 5631 | ||
| 5622 | ;; HHH: Changed. Multi method. Don't know how to handle this in the case | 5632 | ;; HHH: Changed. Multi method. Don't know how to handle this in the case |
| 5623 | ;; of no user name provided. Hack to make it work as it did before: | 5633 | ;; of no user name provided. Hack to make it work as it did before: |
| 5624 | ;; changed `user' to `(or user (user-login-name))' in the places where | 5634 | ;; changed `user' to `(or user (user-login-name))' in the places where |
| 5625 | ;; the value is actually used. | 5635 | ;; the value is actually used. |
| 5626 | (defun tramp-multi-connect-rlogin (p method user host command) | 5636 | (defun tramp-multi-connect-rlogin (p method user host command) |
| @@ -5645,8 +5655,8 @@ If USER is nil, uses the return value of (user-login-name) instead." | |||
| 5645 | (tramp-process-multi-actions p method user host | 5655 | (tramp-process-multi-actions p method user host |
| 5646 | tramp-multi-actions))) | 5656 | tramp-multi-actions))) |
| 5647 | 5657 | ||
| 5648 | ;; HHH: Changed. Multi method. Don't know how to handle this in the case | 5658 | ;; HHH: Changed. Multi method. Don't know how to handle this in the case |
| 5649 | ;; of no user name provided. Hack to make it work as it did before: | 5659 | ;; of no user name provided. Hack to make it work as it did before: |
| 5650 | ;; changed `user' to `(or user (user-login-name))' in the places where | 5660 | ;; changed `user' to `(or user (user-login-name))' in the places where |
| 5651 | ;; the value is actually used. | 5661 | ;; the value is actually used. |
| 5652 | (defun tramp-multi-connect-su (p method user host command) | 5662 | (defun tramp-multi-connect-su (p method user host command) |
| @@ -6276,7 +6286,7 @@ Sends COMMAND, then waits 30 seconds for shell prompt." | |||
| 6276 | (tramp-barf-if-no-shell-prompt | 6286 | (tramp-barf-if-no-shell-prompt |
| 6277 | nil 30 | 6287 | nil 30 |
| 6278 | "Couldn't `%s', see buffer `%s'" command (buffer-name))) | 6288 | "Couldn't `%s', see buffer `%s'" command (buffer-name))) |
| 6279 | 6289 | ||
| 6280 | (defun tramp-wait-for-output (&optional timeout) | 6290 | (defun tramp-wait-for-output (&optional timeout) |
| 6281 | "Wait for output from remote rsh command." | 6291 | "Wait for output from remote rsh command." |
| 6282 | (let ((proc (get-buffer-process (current-buffer))) | 6292 | (let ((proc (get-buffer-process (current-buffer))) |
| @@ -6609,9 +6619,9 @@ Not actually used. Use `(format \"%o\" i)' instead?" | |||
| 6609 | "")) | 6619 | "")) |
| 6610 | 6620 | ||
| 6611 | 6621 | ||
| 6612 | ;; ------------------------------------------------------------ | 6622 | ;; ------------------------------------------------------------ |
| 6613 | ;; -- TRAMP file names -- | 6623 | ;; -- TRAMP file names -- |
| 6614 | ;; ------------------------------------------------------------ | 6624 | ;; ------------------------------------------------------------ |
| 6615 | ;; Conversion functions between external representation and | 6625 | ;; Conversion functions between external representation and |
| 6616 | ;; internal data structure. Convenience functions for internal | 6626 | ;; internal data structure. Convenience functions for internal |
| 6617 | ;; data structure. | 6627 | ;; data structure. |
| @@ -6622,7 +6632,7 @@ Not actually used. Use `(format \"%o\" i)' instead?" | |||
| 6622 | "Return t iff NAME is a tramp file." | 6632 | "Return t iff NAME is a tramp file." |
| 6623 | (save-match-data | 6633 | (save-match-data |
| 6624 | (string-match tramp-file-name-regexp name))) | 6634 | (string-match tramp-file-name-regexp name))) |
| 6625 | 6635 | ||
| 6626 | ;; HHH: Changed. Used to assign the return value of (user-login-name) | 6636 | ;; HHH: Changed. Used to assign the return value of (user-login-name) |
| 6627 | ;; to the `user' part of the structure if a user name was not | 6637 | ;; to the `user' part of the structure if a user name was not |
| 6628 | ;; provided, now it assigns nil. | 6638 | ;; provided, now it assigns nil. |
| @@ -6675,7 +6685,7 @@ This is MULTI-METHOD, if non-nil. Otherwise, it is METHOD, if non-nil. | |||
| 6675 | If both MULTI-METHOD and METHOD are nil, do a lookup in | 6685 | If both MULTI-METHOD and METHOD are nil, do a lookup in |
| 6676 | `tramp-default-method-alist'." | 6686 | `tramp-default-method-alist'." |
| 6677 | (or multi-method method (tramp-find-default-method user host))) | 6687 | (or multi-method method (tramp-find-default-method user host))) |
| 6678 | 6688 | ||
| 6679 | ;; HHH: Not Changed. Multi method. Will probably not handle the case where | 6689 | ;; HHH: Not Changed. Multi method. Will probably not handle the case where |
| 6680 | ;; a user name is not provided in the "file name" very well. | 6690 | ;; a user name is not provided in the "file name" very well. |
| 6681 | (defun tramp-dissect-multi-file-name (name) | 6691 | (defun tramp-dissect-multi-file-name (name) |
| @@ -6847,7 +6857,7 @@ as default." | |||
| 6847 | (if entry | 6857 | (if entry |
| 6848 | (second entry) | 6858 | (second entry) |
| 6849 | (symbol-value param)))) | 6859 | (symbol-value param)))) |
| 6850 | 6860 | ||
| 6851 | 6861 | ||
| 6852 | ;; Auto saving to a special directory. | 6862 | ;; Auto saving to a special directory. |
| 6853 | 6863 | ||
| @@ -7039,9 +7049,9 @@ exiting if process is running." | |||
| 7039 | process flag))) | 7049 | process flag))) |
| 7040 | 7050 | ||
| 7041 | 7051 | ||
| 7042 | ;; ------------------------------------------------------------ | 7052 | ;; ------------------------------------------------------------ |
| 7043 | ;; -- Kludges section -- | 7053 | ;; -- Kludges section -- |
| 7044 | ;; ------------------------------------------------------------ | 7054 | ;; ------------------------------------------------------------ |
| 7045 | 7055 | ||
| 7046 | ;; Currently (as of Emacs 20.5), the function `shell-quote-argument' | 7056 | ;; Currently (as of Emacs 20.5), the function `shell-quote-argument' |
| 7047 | ;; does not deal well with newline characters. Newline is replaced by | 7057 | ;; does not deal well with newline characters. Newline is replaced by |
| @@ -7304,7 +7314,7 @@ report. | |||
| 7304 | ;; strange when doing zerop, we should kill the process and start | 7314 | ;; strange when doing zerop, we should kill the process and start |
| 7305 | ;; again. (Greg Stark) | 7315 | ;; again. (Greg Stark) |
| 7306 | ;; * Add caching for filename completion. (Greg Stark) | 7316 | ;; * Add caching for filename completion. (Greg Stark) |
| 7307 | ;; Of course, this has issues with usability (stale cache bites) | 7317 | ;; Of course, this has issues with usability (stale cache bites) |
| 7308 | ;; -- <daniel@danann.net> | 7318 | ;; -- <daniel@danann.net> |
| 7309 | ;; * Provide a local cache of old versions of remote files for the rsync | 7319 | ;; * Provide a local cache of old versions of remote files for the rsync |
| 7310 | ;; transfer method to use. (Greg Stark) | 7320 | ;; transfer method to use. (Greg Stark) |
diff --git a/lisp/net/trampver.el b/lisp/net/trampver.el index 7456bc1660f..866d6e5647d 100644 --- a/lisp/net/trampver.el +++ b/lisp/net/trampver.el | |||
| @@ -30,7 +30,7 @@ | |||
| 30 | ;; are auto-frobbed from configure.ac, so you should edit that file and run | 30 | ;; are auto-frobbed from configure.ac, so you should edit that file and run |
| 31 | ;; "autoconf && ./configure" to change them. | 31 | ;; "autoconf && ./configure" to change them. |
| 32 | 32 | ||
| 33 | (defconst tramp-version "2.0.45" | 33 | (defconst tramp-version "2.0.46" |
| 34 | "This version of Tramp.") | 34 | "This version of Tramp.") |
| 35 | 35 | ||
| 36 | (defconst tramp-bug-report-address "tramp-devel@mail.freesoftware.fsf.org" | 36 | (defconst tramp-bug-report-address "tramp-devel@mail.freesoftware.fsf.org" |
diff --git a/lisp/pcvs-defs.el b/lisp/pcvs-defs.el index 6bdd6bb6dd8..27629c5ddc6 100644 --- a/lisp/pcvs-defs.el +++ b/lisp/pcvs-defs.el | |||
| @@ -380,6 +380,8 @@ This variable is buffer local and only used in the *cvs* buffer.") | |||
| 380 | ("+" . cvs-mode-tree) | 380 | ("+" . cvs-mode-tree) |
| 381 | ;; mouse bindings | 381 | ;; mouse bindings |
| 382 | ([mouse-2] . cvs-mode-find-file) | 382 | ([mouse-2] . cvs-mode-find-file) |
| 383 | ([follow-link] . (lambda (pos) | ||
| 384 | (if (eq (get-char-property pos 'face) 'cvs-filename-face) t))) | ||
| 383 | ([(down-mouse-3)] . cvs-menu) | 385 | ([(down-mouse-3)] . cvs-menu) |
| 384 | ;; dired-like bindings | 386 | ;; dired-like bindings |
| 385 | ("\C-o" . cvs-mode-display-file) | 387 | ("\C-o" . cvs-mode-display-file) |
diff --git a/lisp/play/zone.el b/lisp/play/zone.el index e073e343f02..80d0760bed2 100644 --- a/lisp/play/zone.el +++ b/lisp/play/zone.el | |||
| @@ -33,10 +33,11 @@ | |||
| 33 | ;; `zone-programs'. See `zone-call' for higher-ordered zoning. | 33 | ;; `zone-programs'. See `zone-call' for higher-ordered zoning. |
| 34 | 34 | ||
| 35 | ;; WARNING: Not appropriate for Emacs sessions over modems or | 35 | ;; WARNING: Not appropriate for Emacs sessions over modems or |
| 36 | ;; computers as slow as mine. | 36 | ;; computers as slow as mine. |
| 37 | 37 | ||
| 38 | ;; THANKS: Christopher Mayer, Scott Flinchbaugh, Rachel Kalmar, | 38 | ;; THANKS: Christopher Mayer, Scott Flinchbaugh, |
| 39 | ;; Max Froumentin. | 39 | ;; Rachel Kalmar, Max Froumentin, Juri Linkov, |
| 40 | ;; Luigi Panzeri, John Paul Wallington. | ||
| 40 | 41 | ||
| 41 | ;;; Code: | 42 | ;;; Code: |
| 42 | 43 | ||
| @@ -140,19 +141,28 @@ If the element is a function or a list of a function and a number, | |||
| 140 | (window-start))))) | 141 | (window-start))))) |
| 141 | (put 'zone 'orig-buffer (current-buffer)) | 142 | (put 'zone 'orig-buffer (current-buffer)) |
| 142 | (put 'zone 'modeline-hidden-level 0) | 143 | (put 'zone 'modeline-hidden-level 0) |
| 143 | (set-buffer outbuf) | 144 | (switch-to-buffer outbuf) |
| 144 | (setq mode-name "Zone") | 145 | (setq mode-name "Zone") |
| 145 | (erase-buffer) | 146 | (erase-buffer) |
| 147 | (setq buffer-undo-list t | ||
| 148 | truncate-lines t | ||
| 149 | tab-width (zone-orig tab-width) | ||
| 150 | line-spacing (zone-orig line-spacing)) | ||
| 146 | (insert text) | 151 | (insert text) |
| 147 | (switch-to-buffer outbuf) | ||
| 148 | (setq buffer-undo-list t) | ||
| 149 | (untabify (point-min) (point-max)) | 152 | (untabify (point-min) (point-max)) |
| 150 | (set-window-start (selected-window) (point-min)) | 153 | (set-window-start (selected-window) (point-min)) |
| 151 | (set-window-point (selected-window) wp) | 154 | (set-window-point (selected-window) wp) |
| 152 | (sit-for 0 500) | 155 | (sit-for 0 500) |
| 153 | (let ((pgm (elt zone-programs (random (length zone-programs)))) | 156 | (let ((pgm (elt zone-programs (random (length zone-programs)))) |
| 154 | (ct (and f (frame-parameter f 'cursor-type)))) | 157 | (ct (and f (frame-parameter f 'cursor-type))) |
| 155 | (when ct (modify-frame-parameters f '((cursor-type . (bar . 0))))) | 158 | (restore (list '(kill-buffer outbuf)))) |
| 159 | (when ct | ||
| 160 | (modify-frame-parameters f '((cursor-type . (bar . 0)))) | ||
| 161 | (setq restore (cons '(modify-frame-parameters | ||
| 162 | f (list (cons 'cursor-type ct))) | ||
| 163 | restore))) | ||
| 164 | ;; Make `restore' a self-disabling one-shot thunk. | ||
| 165 | (setq restore `(lambda () ,@restore (setq restore nil))) | ||
| 156 | (condition-case nil | 166 | (condition-case nil |
| 157 | (progn | 167 | (progn |
| 158 | (message "Zoning... (%s)" pgm) | 168 | (message "Zoning... (%s)" pgm) |
| @@ -166,14 +176,17 @@ If the element is a function or a list of a function and a number, | |||
| 166 | (zone-call pgm) | 176 | (zone-call pgm) |
| 167 | (message "Zoning...sorry")) | 177 | (message "Zoning...sorry")) |
| 168 | (error | 178 | (error |
| 179 | (funcall restore) | ||
| 169 | (while (not (input-pending-p)) | 180 | (while (not (input-pending-p)) |
| 170 | (message (format "We were zoning when we wrote %s..." pgm)) | 181 | (message (format "We were zoning when we wrote %s..." pgm)) |
| 171 | (sit-for 3) | 182 | (sit-for 3) |
| 172 | (message "...here's hoping we didn't hose your buffer!") | 183 | (message "...here's hoping we didn't hose your buffer!") |
| 173 | (sit-for 3))) | 184 | (sit-for 3))) |
| 174 | (quit (ding) (message "Zoning...sorry"))) | 185 | (quit |
| 175 | (when ct (modify-frame-parameters f (list (cons 'cursor-type ct))))) | 186 | (funcall restore) |
| 176 | (kill-buffer outbuf))) | 187 | (ding) |
| 188 | (message "Zoning...sorry"))) | ||
| 189 | (when restore (funcall restore))))) | ||
| 177 | 190 | ||
| 178 | ;;;; Zone when idle, or not. | 191 | ;;;; Zone when idle, or not. |
| 179 | 192 | ||
| @@ -195,13 +208,11 @@ If the element is a function or a list of a function and a number, | |||
| 195 | (message "I won't zone out any more")) | 208 | (message "I won't zone out any more")) |
| 196 | 209 | ||
| 197 | 210 | ||
| 198 | ;;;; zone-pgm-jitter | 211 | ;;;; jittering |
| 199 | 212 | ||
| 200 | (defun zone-shift-up () | 213 | (defun zone-shift-up () |
| 201 | (let* ((b (point)) | 214 | (let* ((b (point)) |
| 202 | (e (progn | 215 | (e (progn (forward-line 1) (point))) |
| 203 | (end-of-line) | ||
| 204 | (if (looking-at "\n") (1+ (point)) (point)))) | ||
| 205 | (s (buffer-substring b e))) | 216 | (s (buffer-substring b e))) |
| 206 | (delete-region b e) | 217 | (delete-region b e) |
| 207 | (goto-char (point-max)) | 218 | (goto-char (point-max)) |
| @@ -209,48 +220,40 @@ If the element is a function or a list of a function and a number, | |||
| 209 | 220 | ||
| 210 | (defun zone-shift-down () | 221 | (defun zone-shift-down () |
| 211 | (goto-char (point-max)) | 222 | (goto-char (point-max)) |
| 212 | (forward-line -1) | ||
| 213 | (beginning-of-line) | ||
| 214 | (let* ((b (point)) | 223 | (let* ((b (point)) |
| 215 | (e (progn | 224 | (e (progn (forward-line -1) (point))) |
| 216 | (end-of-line) | ||
| 217 | (if (looking-at "\n") (1+ (point)) (point)))) | ||
| 218 | (s (buffer-substring b e))) | 225 | (s (buffer-substring b e))) |
| 219 | (delete-region b e) | 226 | (delete-region b e) |
| 220 | (goto-char (point-min)) | 227 | (goto-char (point-min)) |
| 221 | (insert s))) | 228 | (insert s))) |
| 222 | 229 | ||
| 223 | (defun zone-shift-left () | 230 | (defun zone-shift-left () |
| 224 | (while (not (eobp)) | 231 | (let (s) |
| 225 | (or (eolp) | 232 | (while (not (eobp)) |
| 226 | (let ((c (following-char))) | 233 | (unless (eolp) |
| 227 | (delete-char 1) | 234 | (setq s (buffer-substring (point) (1+ (point)))) |
| 228 | (end-of-line) | 235 | (delete-char 1) |
| 229 | (insert c))) | 236 | (end-of-line) |
| 230 | (forward-line 1))) | 237 | (insert s)) |
| 238 | (forward-char 1)))) | ||
| 231 | 239 | ||
| 232 | (defun zone-shift-right () | 240 | (defun zone-shift-right () |
| 233 | (while (not (eobp)) | 241 | (goto-char (point-max)) |
| 234 | (end-of-line) | 242 | (end-of-line) |
| 235 | (or (bolp) | 243 | (let (s) |
| 236 | (let ((c (preceding-char))) | 244 | (while (not (bobp)) |
| 237 | (delete-backward-char 1) | 245 | (unless (bolp) |
| 238 | (beginning-of-line) | 246 | (setq s (buffer-substring (1- (point)) (point))) |
| 239 | (insert c))) | 247 | (delete-char -1) |
| 240 | (forward-line 1))) | 248 | (beginning-of-line) |
| 249 | (insert s)) | ||
| 250 | (end-of-line 0)))) | ||
| 241 | 251 | ||
| 242 | (defun zone-pgm-jitter () | 252 | (defun zone-pgm-jitter () |
| 243 | (let ((ops [ | 253 | (let ((ops [ |
| 244 | zone-shift-left | 254 | zone-shift-left |
| 245 | zone-shift-left | ||
| 246 | zone-shift-left | ||
| 247 | zone-shift-left | ||
| 248 | zone-shift-right | 255 | zone-shift-right |
| 249 | zone-shift-down | 256 | zone-shift-down |
| 250 | zone-shift-down | ||
| 251 | zone-shift-down | ||
| 252 | zone-shift-down | ||
| 253 | zone-shift-down | ||
| 254 | zone-shift-up | 257 | zone-shift-up |
| 255 | ])) | 258 | ])) |
| 256 | (goto-char (point-min)) | 259 | (goto-char (point-min)) |
| @@ -260,7 +263,7 @@ If the element is a function or a list of a function and a number, | |||
| 260 | (sit-for 0 10)))) | 263 | (sit-for 0 10)))) |
| 261 | 264 | ||
| 262 | 265 | ||
| 263 | ;;;; zone-pgm-whack-chars | 266 | ;;;; whacking chars |
| 264 | 267 | ||
| 265 | (defun zone-pgm-whack-chars () | 268 | (defun zone-pgm-whack-chars () |
| 266 | (let ((tbl (copy-sequence (get 'zone-pgm-whack-chars 'wc-tbl)))) | 269 | (let ((tbl (copy-sequence (get 'zone-pgm-whack-chars 'wc-tbl)))) |
| @@ -280,7 +283,7 @@ If the element is a function or a list of a function and a number, | |||
| 280 | (setq i (1+ i))) | 283 | (setq i (1+ i))) |
| 281 | tbl)) | 284 | tbl)) |
| 282 | 285 | ||
| 283 | ;;;; zone-pgm-dissolve | 286 | ;;;; dissolving |
| 284 | 287 | ||
| 285 | (defun zone-remove-text () | 288 | (defun zone-remove-text () |
| 286 | (let ((working t)) | 289 | (let ((working t)) |
| @@ -305,11 +308,11 @@ If the element is a function or a list of a function and a number, | |||
| 305 | (zone-pgm-jitter)) | 308 | (zone-pgm-jitter)) |
| 306 | 309 | ||
| 307 | 310 | ||
| 308 | ;;;; zone-pgm-explode | 311 | ;;;; exploding |
| 309 | 312 | ||
| 310 | (defun zone-exploding-remove () | 313 | (defun zone-exploding-remove () |
| 311 | (let ((i 0)) | 314 | (let ((i 0)) |
| 312 | (while (< i 20) | 315 | (while (< i 5) |
| 313 | (save-excursion | 316 | (save-excursion |
| 314 | (goto-char (point-min)) | 317 | (goto-char (point-min)) |
| 315 | (while (not (eobp)) | 318 | (while (not (eobp)) |
| @@ -328,7 +331,7 @@ If the element is a function or a list of a function and a number, | |||
| 328 | (zone-pgm-jitter)) | 331 | (zone-pgm-jitter)) |
| 329 | 332 | ||
| 330 | 333 | ||
| 331 | ;;;; zone-pgm-putz-with-case | 334 | ;;;; putzing w/ case |
| 332 | 335 | ||
| 333 | ;; Faster than `zone-pgm-putz-with-case', but not as good: all | 336 | ;; Faster than `zone-pgm-putz-with-case', but not as good: all |
| 334 | ;; instances of the same letter have the same case, which produces a | 337 | ;; instances of the same letter have the same case, which produces a |
| @@ -377,7 +380,7 @@ If the element is a function or a list of a function and a number, | |||
| 377 | (sit-for 0 2))) | 380 | (sit-for 0 2))) |
| 378 | 381 | ||
| 379 | 382 | ||
| 380 | ;;;; zone-pgm-rotate | 383 | ;;;; rotating |
| 381 | 384 | ||
| 382 | (defun zone-line-specs () | 385 | (defun zone-line-specs () |
| 383 | (let (ret) | 386 | (let (ret) |
| @@ -439,66 +442,84 @@ If the element is a function or a list of a function and a number, | |||
| 439 | (zone-pgm-rotate (lambda () (1- (- (random 3)))))) | 442 | (zone-pgm-rotate (lambda () (1- (- (random 3)))))) |
| 440 | 443 | ||
| 441 | 444 | ||
| 442 | ;;;; zone-pgm-drip | 445 | ;;;; dripping |
| 443 | 446 | ||
| 444 | (defun zone-cpos (pos) | 447 | (defsubst zone-cpos (pos) |
| 445 | (buffer-substring pos (1+ pos))) | 448 | (buffer-substring pos (1+ pos))) |
| 446 | 449 | ||
| 447 | (defun zone-fret (pos) | 450 | (defsubst zone-replace-char (count del-count char-as-string new-value) |
| 451 | (delete-char (or del-count (- count))) | ||
| 452 | (aset char-as-string 0 new-value) | ||
| 453 | (dotimes (i count) (insert char-as-string))) | ||
| 454 | |||
| 455 | (defsubst zone-park/sit-for (pos seconds) | ||
| 456 | (let ((p (point))) | ||
| 457 | (goto-char pos) | ||
| 458 | (prog1 (sit-for seconds) | ||
| 459 | (goto-char p)))) | ||
| 460 | |||
| 461 | (defun zone-fret (wbeg pos) | ||
| 448 | (let* ((case-fold-search nil) | 462 | (let* ((case-fold-search nil) |
| 449 | (c-string (zone-cpos pos)) | 463 | (c-string (zone-cpos pos)) |
| 464 | (cw-ceil (ceiling (char-width (aref c-string 0)))) | ||
| 450 | (hmm (cond | 465 | (hmm (cond |
| 451 | ((string-match "[a-z]" c-string) (upcase c-string)) | 466 | ((string-match "[a-z]" c-string) (upcase c-string)) |
| 452 | ((string-match "[A-Z]" c-string) (downcase c-string)) | 467 | ((string-match "[A-Z]" c-string) (downcase c-string)) |
| 453 | (t " ")))) | 468 | (t (propertize " " 'display `(space :width ,cw-ceil)))))) |
| 454 | (do ((i 0 (1+ i)) | 469 | (do ((i 0 (1+ i)) |
| 455 | (wait 0.5 (* wait 0.8))) | 470 | (wait 0.5 (* wait 0.8))) |
| 456 | ((= i 20)) | 471 | ((= i 20)) |
| 457 | (goto-char pos) | 472 | (goto-char pos) |
| 458 | (delete-char 1) | 473 | (delete-char 1) |
| 459 | (insert (if (= 0 (% i 2)) hmm c-string)) | 474 | (insert (if (= 0 (% i 2)) hmm c-string)) |
| 460 | (sit-for wait)) | 475 | (zone-park/sit-for wbeg wait)) |
| 461 | (delete-char -1) (insert c-string))) | 476 | (delete-char -1) (insert c-string))) |
| 462 | 477 | ||
| 463 | (defun zone-fill-out-screen (width height) | 478 | (defun zone-fill-out-screen (width height) |
| 464 | (save-excursion | 479 | (let ((start (window-start)) |
| 465 | (goto-char (point-min)) | 480 | (line (make-string width 32))) |
| 481 | (goto-char start) | ||
| 466 | ;; fill out rectangular ws block | 482 | ;; fill out rectangular ws block |
| 467 | (while (not (eobp)) | 483 | (while (progn (end-of-line) |
| 468 | (end-of-line) | 484 | (let ((cc (current-column))) |
| 469 | (let ((cc (current-column))) | 485 | (if (< cc width) |
| 470 | (if (< cc width) | 486 | (insert (substring line cc)) |
| 471 | (insert (make-string (- width cc) 32)) | 487 | (delete-char (- width cc))) |
| 472 | (delete-char (- width cc)))) | 488 | (cond ((eobp) (insert "\n") nil) |
| 473 | (unless (eobp) | 489 | (t (forward-char 1) t))))) |
| 474 | (forward-char 1))) | ||
| 475 | ;; pad ws past bottom of screen | 490 | ;; pad ws past bottom of screen |
| 476 | (let ((nl (- height (count-lines (point-min) (point))))) | 491 | (let ((nl (- height (count-lines (point-min) (point))))) |
| 477 | (when (> nl 0) | 492 | (when (> nl 0) |
| 478 | (let ((line (concat (make-string (1- width) ? ) "\n"))) | 493 | (setq line (concat line "\n")) |
| 479 | (do ((i 0 (1+ i))) | 494 | (do ((i 0 (1+ i))) |
| 480 | ((= i nl)) | 495 | ((= i nl)) |
| 481 | (insert line))))))) | 496 | (insert line)))) |
| 482 | 497 | (goto-char start) | |
| 483 | (defun zone-fall-through-ws (c col wend) | 498 | (recenter 0) |
| 484 | (let ((fall-p nil) ; todo: move outward | 499 | (sit-for 0))) |
| 485 | (wait 0.15) | 500 | |
| 486 | (o (point)) ; for terminals w/o cursor hiding | 501 | (defun zone-fall-through-ws (c wbeg wend) |
| 487 | (p (point))) | 502 | (let* ((cw-ceil (ceiling (char-width (aref c 0)))) |
| 488 | (while (progn | 503 | (spaces (make-string cw-ceil 32)) |
| 489 | (forward-line 1) | 504 | (col (current-column)) |
| 490 | (move-to-column col) | 505 | (wait 0.15) |
| 491 | (looking-at " ")) | 506 | newpos fall-p) |
| 492 | (setq fall-p t) | 507 | (while (when (save-excursion |
| 493 | (delete-char 1) | 508 | (next-line 1) |
| 494 | (insert (if (< (point) wend) c " ")) | 509 | (and (= col (current-column)) |
| 495 | (save-excursion | 510 | (setq newpos (point)) |
| 496 | (goto-char p) | 511 | (string= spaces (buffer-substring-no-properties |
| 497 | (delete-char 1) | 512 | newpos (+ newpos cw-ceil))) |
| 498 | (insert " ") | 513 | (setq newpos (+ newpos (1- cw-ceil))))) |
| 499 | (goto-char o) | 514 | (setq fall-p t) |
| 500 | (sit-for (setq wait (* wait 0.8)))) | 515 | (delete-char 1) |
| 501 | (setq p (1- (point)))) | 516 | (insert spaces) |
| 517 | (goto-char newpos) | ||
| 518 | (when (< (point) wend) | ||
| 519 | (delete-char cw-ceil) | ||
| 520 | (insert c) | ||
| 521 | (forward-char -1) | ||
| 522 | (zone-park/sit-for wbeg (setq wait (* wait 0.8)))))) | ||
| 502 | fall-p)) | 523 | fall-p)) |
| 503 | 524 | ||
| 504 | (defun zone-pgm-drip (&optional fret-p pancake-p) | 525 | (defun zone-pgm-drip (&optional fret-p pancake-p) |
| @@ -506,41 +527,35 @@ If the element is a function or a list of a function and a number, | |||
| 506 | (wh (window-height)) | 527 | (wh (window-height)) |
| 507 | (mc 0) ; miss count | 528 | (mc 0) ; miss count |
| 508 | (total (* ww wh)) | 529 | (total (* ww wh)) |
| 509 | (fall-p nil)) | 530 | (fall-p nil) |
| 531 | wbeg wend c) | ||
| 510 | (zone-fill-out-screen ww wh) | 532 | (zone-fill-out-screen ww wh) |
| 533 | (setq wbeg (window-start) | ||
| 534 | wend (window-end)) | ||
| 511 | (catch 'done | 535 | (catch 'done |
| 512 | (while (not (input-pending-p)) | 536 | (while (not (input-pending-p)) |
| 513 | (let ((wbeg (window-start)) | 537 | (setq mc 0 wend (window-end)) |
| 514 | (wend (window-end))) | 538 | ;; select non-ws character, but don't miss too much |
| 515 | (setq mc 0) | 539 | (goto-char (+ wbeg (random (- wend wbeg)))) |
| 516 | ;; select non-ws character, but don't miss too much | 540 | (while (looking-at "[ \n\f]") |
| 517 | (goto-char (+ wbeg (random (- wend wbeg)))) | 541 | (if (= total (setq mc (1+ mc))) |
| 518 | (while (looking-at "[ \n\f]") | 542 | (throw 'done 'sel) |
| 519 | (if (= total (setq mc (1+ mc))) | 543 | (goto-char (+ wbeg (random (- wend wbeg)))))) |
| 520 | (throw 'done 'sel) | 544 | ;; character animation sequence |
| 521 | (goto-char (+ wbeg (random (- wend wbeg)))))) | 545 | (let ((p (point))) |
| 522 | ;; character animation sequence | 546 | (when fret-p (zone-fret wbeg p)) |
| 523 | (let ((p (point))) | 547 | (goto-char p) |
| 524 | (when fret-p (zone-fret p)) | 548 | (setq c (zone-cpos p) |
| 525 | (goto-char p) | 549 | fall-p (zone-fall-through-ws c wbeg wend))) |
| 526 | (setq fall-p (zone-fall-through-ws | ||
| 527 | (zone-cpos p) (current-column) wend)))) | ||
| 528 | ;; assuming current-column has not changed... | 550 | ;; assuming current-column has not changed... |
| 529 | (when (and pancake-p | 551 | (when (and pancake-p |
| 530 | fall-p | 552 | fall-p |
| 531 | (< (count-lines (point-min) (point)) | 553 | (< (count-lines (point-min) (point)) |
| 532 | wh)) | 554 | wh)) |
| 533 | (previous-line 1) | 555 | (let ((cw (ceiling (char-width (aref c 0))))) |
| 534 | (forward-char 1) | 556 | (zone-replace-char cw 1 c ?@) (zone-park/sit-for wbeg 0.137) |
| 535 | (sit-for 0.137) | 557 | (zone-replace-char cw nil c ?*) (zone-park/sit-for wbeg 0.137) |
| 536 | (delete-char -1) | 558 | (zone-replace-char cw nil c ?_))))))) |
| 537 | (insert "@") | ||
| 538 | (sit-for 0.137) | ||
| 539 | (delete-char -1) | ||
| 540 | (insert "*") | ||
| 541 | (sit-for 0.137) | ||
| 542 | (delete-char -1) | ||
| 543 | (insert "_")))))) | ||
| 544 | 559 | ||
| 545 | (defun zone-pgm-drip-fretfully () | 560 | (defun zone-pgm-drip-fretfully () |
| 546 | (zone-pgm-drip t)) | 561 | (zone-pgm-drip t)) |
| @@ -552,7 +567,7 @@ If the element is a function or a list of a function and a number, | |||
| 552 | (zone-pgm-drip t t)) | 567 | (zone-pgm-drip t t)) |
| 553 | 568 | ||
| 554 | 569 | ||
| 555 | ;;;; zone-pgm-paragraph-spaz | 570 | ;;;; paragraph spazzing (for textish modes) |
| 556 | 571 | ||
| 557 | (defun zone-pgm-paragraph-spaz () | 572 | (defun zone-pgm-paragraph-spaz () |
| 558 | (if (memq (zone-orig major-mode) | 573 | (if (memq (zone-orig major-mode) |
| @@ -633,30 +648,29 @@ If nil, `zone-pgm-random-life' chooses a value from 0-3 (inclusive).") | |||
| 633 | (rtc (- (frame-width) 11)) | 648 | (rtc (- (frame-width) 11)) |
| 634 | (min (window-start)) | 649 | (min (window-start)) |
| 635 | (max (1- (window-end))) | 650 | (max (1- (window-end))) |
| 636 | c col) | 651 | s c col) |
| 637 | (delete-region max (point-max)) | 652 | (delete-region max (point-max)) |
| 638 | (while (progn (goto-char (+ min (random max))) | 653 | (while (and (progn (goto-char min) (sit-for 0.05)) |
| 639 | (and (sit-for 0.005) | 654 | (progn (goto-char (+ min (random max))) |
| 640 | (or (progn (skip-chars-forward " @\n" max) | 655 | (or (progn (skip-chars-forward " @\n" max) |
| 641 | (not (= max (point)))) | 656 | (not (= max (point)))) |
| 642 | (unless (or (= 0 (skip-chars-backward " @\n" min)) | 657 | (unless (or (= 0 (skip-chars-backward " @\n" min)) |
| 643 | (= min (point))) | 658 | (= min (point))) |
| 644 | (forward-char -1) | 659 | (forward-char -1) |
| 645 | t)))) | 660 | t)))) |
| 646 | (setq c (char-after)) | 661 | (unless (or (eolp) (eobp)) |
| 647 | (unless (or (not c) (= ?\n c)) | 662 | (setq s (zone-cpos (point)) |
| 648 | (forward-char 1) | 663 | c (aref s 0)) |
| 649 | (insert-and-inherit ; keep colors | 664 | (zone-replace-char |
| 650 | (cond ((or (> top (point)) | 665 | (char-width c) |
| 651 | (< bot (point)) | 666 | 1 s (cond ((or (> top (point)) |
| 652 | (or (> 11 (setq col (current-column))) | 667 | (< bot (point)) |
| 653 | (< rtc col))) | 668 | (or (> 11 (setq col (current-column))) |
| 654 | 32) | 669 | (< rtc col))) |
| 655 | ((and (<= ?a c) (>= ?z c)) (+ c (- ?A ?a))) | 670 | 32) |
| 656 | ((and (<= ?A c) (>= ?Z c)) ?*) | 671 | ((and (<= ?a c) (>= ?z c)) (+ c (- ?A ?a))) |
| 657 | (t ?@))) | 672 | ((and (<= ?A c) (>= ?Z c)) ?*) |
| 658 | (forward-char -1) | 673 | (t ?@))))) |
| 659 | (delete-char -1))) | ||
| 660 | (sit-for 3) | 674 | (sit-for 3) |
| 661 | (setq col nil) | 675 | (setq col nil) |
| 662 | (goto-char bot) | 676 | (goto-char bot) |
| @@ -666,8 +680,13 @@ If nil, `zone-pgm-random-life' chooses a value from 0-3 (inclusive).") | |||
| 666 | (setq col (cons (buffer-substring (point) c) col)) | 680 | (setq col (cons (buffer-substring (point) c) col)) |
| 667 | (end-of-line 0) | 681 | (end-of-line 0) |
| 668 | (forward-char -10)) | 682 | (forward-char -10)) |
| 669 | (let ((life-patterns (vector (cons (make-string (length (car col)) 32) | 683 | (let ((life-patterns (vector |
| 670 | col)))) | 684 | (if (and col (search-forward "@" max t)) |
| 685 | (cons (make-string (length (car col)) 32) col) | ||
| 686 | (list (mapconcat 'identity | ||
| 687 | (make-list (/ (- rtc 11) 15) | ||
| 688 | (make-string 5 ?@)) | ||
| 689 | (make-string 10 32))))))) | ||
| 671 | (life (or zone-pgm-random-life-wait (random 4))) | 690 | (life (or zone-pgm-random-life-wait (random 4))) |
| 672 | (kill-buffer nil)))) | 691 | (kill-buffer nil)))) |
| 673 | 692 | ||
diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el index f2750ec8ff4..9c7e8fe1560 100644 --- a/lisp/progmodes/compile.el +++ b/lisp/progmodes/compile.el | |||
| @@ -1044,6 +1044,7 @@ exited abnormally with code %d\n" | |||
| 1044 | (defvar compilation-minor-mode-map | 1044 | (defvar compilation-minor-mode-map |
| 1045 | (let ((map (make-sparse-keymap))) | 1045 | (let ((map (make-sparse-keymap))) |
| 1046 | (define-key map [mouse-2] 'compile-goto-error) | 1046 | (define-key map [mouse-2] 'compile-goto-error) |
| 1047 | (define-key map [follow-link] 'mouse-face) | ||
| 1047 | (define-key map "\C-c\C-c" 'compile-goto-error) | 1048 | (define-key map "\C-c\C-c" 'compile-goto-error) |
| 1048 | (define-key map "\C-m" 'compile-goto-error) | 1049 | (define-key map "\C-m" 'compile-goto-error) |
| 1049 | (define-key map "\C-c\C-k" 'kill-compilation) | 1050 | (define-key map "\C-c\C-k" 'kill-compilation) |
| @@ -1073,6 +1074,7 @@ exited abnormally with code %d\n" | |||
| 1073 | (defvar compilation-button-map | 1074 | (defvar compilation-button-map |
| 1074 | (let ((map (make-sparse-keymap))) | 1075 | (let ((map (make-sparse-keymap))) |
| 1075 | (define-key map [mouse-2] 'compile-goto-error) | 1076 | (define-key map [mouse-2] 'compile-goto-error) |
| 1077 | (define-key map [follow-link] 'mouse-face) | ||
| 1076 | (define-key map "\C-m" 'compile-goto-error) | 1078 | (define-key map "\C-m" 'compile-goto-error) |
| 1077 | map) | 1079 | map) |
| 1078 | "Keymap for compilation-message buttons.") | 1080 | "Keymap for compilation-message buttons.") |
| @@ -1084,6 +1086,7 @@ exited abnormally with code %d\n" | |||
| 1084 | ;; because that introduces a menu bar item we don't want. | 1086 | ;; because that introduces a menu bar item we don't want. |
| 1085 | ;; That confuses C-down-mouse-3. | 1087 | ;; That confuses C-down-mouse-3. |
| 1086 | (define-key map [mouse-2] 'compile-goto-error) | 1088 | (define-key map [mouse-2] 'compile-goto-error) |
| 1089 | (define-key map [follow-link] 'mouse-face) | ||
| 1087 | (define-key map "\C-c\C-c" 'compile-goto-error) | 1090 | (define-key map "\C-c\C-c" 'compile-goto-error) |
| 1088 | (define-key map "\C-m" 'compile-goto-error) | 1091 | (define-key map "\C-m" 'compile-goto-error) |
| 1089 | (define-key map "\C-c\C-k" 'kill-compilation) | 1092 | (define-key map "\C-c\C-k" 'kill-compilation) |
diff --git a/lisp/progmodes/executable.el b/lisp/progmodes/executable.el index a5d401a5f5e..0eb53771019 100644 --- a/lisp/progmodes/executable.el +++ b/lisp/progmodes/executable.el | |||
| @@ -199,20 +199,20 @@ non-executable files." | |||
| 199 | (file-modes buffer-file-name))))))) | 199 | (file-modes buffer-file-name))))))) |
| 200 | 200 | ||
| 201 | 201 | ||
| 202 | ;;;###autoload | ||
| 202 | (defun executable-interpret (command) | 203 | (defun executable-interpret (command) |
| 203 | "Run script with user-specified args, and collect output in a buffer. | 204 | "Run script with user-specified args, and collect output in a buffer. |
| 204 | While script runs asynchronously, you can use the \\[next-error] command | 205 | While script runs asynchronously, you can use the \\[next-error] |
| 205 | to find the next error." | 206 | command to find the next error. The buffer is also in `comint-mode' and |
| 207 | `compilation-shell-minor-mode', so that you can answer any prompts." | ||
| 206 | (interactive (list (read-string "Run script: " | 208 | (interactive (list (read-string "Run script: " |
| 207 | (or executable-command | 209 | (or executable-command |
| 208 | buffer-file-name)))) | 210 | buffer-file-name)))) |
| 209 | (require 'compile) | 211 | (require 'compile) |
| 210 | (save-some-buffers (not compilation-ask-about-save)) | 212 | (save-some-buffers (not compilation-ask-about-save)) |
| 211 | (make-local-variable 'executable-command) | 213 | (set (make-local-variable 'executable-command) command) |
| 212 | (compile-internal (setq executable-command command) | 214 | (let ((compilation-error-regexp-alist executable-error-regexp-alist)) |
| 213 | "No more errors." "Interpretation" | 215 | (compilation-start command t (lambda (x) "*interpretation*")))) |
| 214 | ;; Give it a simpler regexp to match. | ||
| 215 | nil executable-error-regexp-alist)) | ||
| 216 | 216 | ||
| 217 | 217 | ||
| 218 | 218 | ||
diff --git a/lisp/progmodes/grep.el b/lisp/progmodes/grep.el index fd4b716ae4b..04fcae78ea6 100644 --- a/lisp/progmodes/grep.el +++ b/lisp/progmodes/grep.el | |||
| @@ -275,6 +275,9 @@ Notice that using \\[next-error] or \\[compile-goto-error] modifies | |||
| 275 | (defvar grep-error-face compilation-error-face | 275 | (defvar grep-error-face compilation-error-face |
| 276 | "Face name to use for grep error messages.") | 276 | "Face name to use for grep error messages.") |
| 277 | 277 | ||
| 278 | (defvar grep-match-face 'match | ||
| 279 | "Face name to use for grep matches.") | ||
| 280 | |||
| 278 | (defvar grep-mode-font-lock-keywords | 281 | (defvar grep-mode-font-lock-keywords |
| 279 | '(;; Command output lines. | 282 | '(;; Command output lines. |
| 280 | ("^\\([A-Za-z_0-9/\.+-]+\\)[ \t]*:" 1 font-lock-function-name-face) | 283 | ("^\\([A-Za-z_0-9/\.+-]+\\)[ \t]*:" 1 font-lock-function-name-face) |
| @@ -291,7 +294,7 @@ Notice that using \\[next-error] or \\[compile-goto-error] modifies | |||
| 291 | (2 compilation-line-face)) | 294 | (2 compilation-line-face)) |
| 292 | ;; Highlight grep matches and delete markers | 295 | ;; Highlight grep matches and delete markers |
| 293 | ("\\(\033\\[01;41m\\)\\(.*?\\)\\(\033\\[00m\\)" | 296 | ("\\(\033\\[01;41m\\)\\(.*?\\)\\(\033\\[00m\\)" |
| 294 | (2 compilation-column-face) | 297 | (2 grep-match-face) |
| 295 | ((lambda (p)) | 298 | ((lambda (p)) |
| 296 | (progn | 299 | (progn |
| 297 | ;; Delete markers with `replace-match' because it updates | 300 | ;; Delete markers with `replace-match' because it updates |
diff --git a/lisp/progmodes/hideshow.el b/lisp/progmodes/hideshow.el index 7013c3856e3..3bd5dd2a1f6 100644 --- a/lisp/progmodes/hideshow.el +++ b/lisp/progmodes/hideshow.el | |||
| @@ -5,7 +5,7 @@ | |||
| 5 | ;; Author: Thien-Thi Nguyen <ttn@gnu.org> | 5 | ;; Author: Thien-Thi Nguyen <ttn@gnu.org> |
| 6 | ;; Dan Nicolaescu <dann@ics.uci.edu> | 6 | ;; Dan Nicolaescu <dann@ics.uci.edu> |
| 7 | ;; Keywords: C C++ java lisp tools editing comments blocks hiding outlines | 7 | ;; Keywords: C C++ java lisp tools editing comments blocks hiding outlines |
| 8 | ;; Maintainer-Version: 5.31 | 8 | ;; Maintainer-Version: 5.39.2.8 |
| 9 | ;; Time-of-Day-Author-Most-Likely-to-be-Recalcitrant: early morning | 9 | ;; Time-of-Day-Author-Most-Likely-to-be-Recalcitrant: early morning |
| 10 | 10 | ||
| 11 | ;; This file is part of GNU Emacs. | 11 | ;; This file is part of GNU Emacs. |
| @@ -58,7 +58,7 @@ | |||
| 58 | ;; | 58 | ;; |
| 59 | ;; (load-library "hideshow") | 59 | ;; (load-library "hideshow") |
| 60 | ;; (add-hook 'X-mode-hook ; other modes similarly | 60 | ;; (add-hook 'X-mode-hook ; other modes similarly |
| 61 | ;; '(lambda () (hs-minor-mode 1))) | 61 | ;; (lambda () (hs-minor-mode 1))) |
| 62 | ;; | 62 | ;; |
| 63 | ;; where X = {emacs-lisp,c,c++,perl,...}. You can also manually toggle | 63 | ;; where X = {emacs-lisp,c,c++,perl,...}. You can also manually toggle |
| 64 | ;; hideshow minor mode by typing `M-x hs-minor-mode'. After hideshow is | 64 | ;; hideshow minor mode by typing `M-x hs-minor-mode'. After hideshow is |
| @@ -133,10 +133,7 @@ | |||
| 133 | ;; variable `hs-special-modes-alist'. Packages that use hideshow should | 133 | ;; variable `hs-special-modes-alist'. Packages that use hideshow should |
| 134 | ;; do something like: | 134 | ;; do something like: |
| 135 | ;; | 135 | ;; |
| 136 | ;; (let ((my-mode-hs-info '(my-mode "{{" "}}" ...))) | 136 | ;; (add-to-list 'hs-special-modes-alist '(my-mode "{{" "}}" ...)) |
| 137 | ;; (if (not (member my-mode-hs-info hs-special-modes-alist)) | ||
| 138 | ;; (setq hs-special-modes-alist | ||
| 139 | ;; (cons my-mode-hs-info hs-special-modes-alist)))) | ||
| 140 | ;; | 137 | ;; |
| 141 | ;; If you have an entry that works particularly well, consider | 138 | ;; If you have an entry that works particularly well, consider |
| 142 | ;; submitting it for inclusion in hideshow.el. See docstring for | 139 | ;; submitting it for inclusion in hideshow.el. See docstring for |
| @@ -180,9 +177,9 @@ | |||
| 180 | ;; In the case of `vc-diff', here is a less invasive workaround: | 177 | ;; In the case of `vc-diff', here is a less invasive workaround: |
| 181 | ;; | 178 | ;; |
| 182 | ;; (add-hook 'vc-before-checkin-hook | 179 | ;; (add-hook 'vc-before-checkin-hook |
| 183 | ;; '(lambda () | 180 | ;; (lambda () |
| 184 | ;; (goto-char (point-min)) | 181 | ;; (goto-char (point-min)) |
| 185 | ;; (hs-show-block))) | 182 | ;; (hs-show-block))) |
| 186 | ;; | 183 | ;; |
| 187 | ;; Unfortunately, these workarounds do not restore hideshow state. | 184 | ;; Unfortunately, these workarounds do not restore hideshow state. |
| 188 | ;; If someone figures out a better way, please let me know. | 185 | ;; If someone figures out a better way, please let me know. |
| @@ -223,6 +220,7 @@ | |||
| 223 | ;;; Code: | 220 | ;;; Code: |
| 224 | 221 | ||
| 225 | (require 'easymenu) | 222 | (require 'easymenu) |
| 223 | (eval-when-compile (require 'cl)) | ||
| 226 | 224 | ||
| 227 | ;;--------------------------------------------------------------------------- | 225 | ;;--------------------------------------------------------------------------- |
| 228 | ;; user-configurable variables | 226 | ;; user-configurable variables |
| @@ -265,8 +263,7 @@ This has effect iff `search-invisible' is set to `open'." | |||
| 265 | '((c-mode "{" "}" "/[*/]" nil hs-c-like-adjust-block-beginning) | 263 | '((c-mode "{" "}" "/[*/]" nil hs-c-like-adjust-block-beginning) |
| 266 | (c++-mode "{" "}" "/[*/]" nil hs-c-like-adjust-block-beginning) | 264 | (c++-mode "{" "}" "/[*/]" nil hs-c-like-adjust-block-beginning) |
| 267 | (bibtex-mode ("^@\\S(*\\(\\s(\\)" 1)) | 265 | (bibtex-mode ("^@\\S(*\\(\\s(\\)" 1)) |
| 268 | (java-mode "{" "}" "/[*/]" nil hs-c-like-adjust-block-beginning) | 266 | (java-mode "{" "}" "/[*/]" nil hs-c-like-adjust-block-beginning)) |
| 269 | ) | ||
| 270 | "*Alist for initializing the hideshow variables for different modes. | 267 | "*Alist for initializing the hideshow variables for different modes. |
| 271 | Each element has the form | 268 | Each element has the form |
| 272 | (MODE START END COMMENT-START FORWARD-SEXP-FUNC ADJUST-BEG-FUNC). | 269 | (MODE START END COMMENT-START FORWARD-SEXP-FUNC ADJUST-BEG-FUNC). |
| @@ -378,28 +375,6 @@ Note that `mode-line-format' is buffer-local.") | |||
| 378 | ;;--------------------------------------------------------------------------- | 375 | ;;--------------------------------------------------------------------------- |
| 379 | ;; system dependency | 376 | ;; system dependency |
| 380 | 377 | ||
| 381 | ; ;; xemacs compatibility | ||
| 382 | ; (when (string-match "xemacs\\|lucid" emacs-version) | ||
| 383 | ; ;; use pre-packaged compatiblity layer | ||
| 384 | ; (require 'overlay)) | ||
| 385 | ; | ||
| 386 | ; ;; xemacs and emacs-19 compatibility | ||
| 387 | ; (when (or (not (fboundp 'add-to-invisibility-spec)) | ||
| 388 | ; (not (fboundp 'remove-from-invisibility-spec))) | ||
| 389 | ; ;; `buffer-invisibility-spec' mutators snarfed from Emacs 20.3 lisp/subr.el | ||
| 390 | ; (defun add-to-invisibility-spec (arg) | ||
| 391 | ; (cond | ||
| 392 | ; ((or (null buffer-invisibility-spec) (eq buffer-invisibility-spec t)) | ||
| 393 | ; (setq buffer-invisibility-spec (list arg))) | ||
| 394 | ; (t | ||
| 395 | ; (setq buffer-invisibility-spec | ||
| 396 | ; (cons arg buffer-invisibility-spec))))) | ||
| 397 | ; (defun remove-from-invisibility-spec (arg) | ||
| 398 | ; (when buffer-invisibility-spec | ||
| 399 | ; (setq buffer-invisibility-spec | ||
| 400 | ; (delete arg buffer-invisibility-spec))))) | ||
| 401 | |||
| 402 | ;; hs-match-data | ||
| 403 | (defalias 'hs-match-data 'match-data) | 378 | (defalias 'hs-match-data 'match-data) |
| 404 | 379 | ||
| 405 | ;;--------------------------------------------------------------------------- | 380 | ;;--------------------------------------------------------------------------- |
| @@ -409,12 +384,9 @@ Note that `mode-line-format' is buffer-local.") | |||
| 409 | "Delete hideshow overlays in region defined by FROM and TO." | 384 | "Delete hideshow overlays in region defined by FROM and TO." |
| 410 | (when (< to from) | 385 | (when (< to from) |
| 411 | (setq from (prog1 to (setq to from)))) | 386 | (setq from (prog1 to (setq to from)))) |
| 412 | (let ((ovs (overlays-in from to))) | 387 | (dolist (ov (overlays-in from to)) |
| 413 | (while ovs | 388 | (when (overlay-get ov 'hs) |
| 414 | (let ((ov (car ovs))) | 389 | (delete-overlay ov)))) |
| 415 | (when (overlay-get ov 'hs) | ||
| 416 | (delete-overlay ov))) | ||
| 417 | (setq ovs (cdr ovs))))) | ||
| 418 | 390 | ||
| 419 | (defun hs-isearch-show (ov) | 391 | (defun hs-isearch-show (ov) |
| 420 | "Delete overlay OV, and set `hs-headline' to nil. | 392 | "Delete overlay OV, and set `hs-headline' to nil. |
| @@ -433,16 +405,16 @@ OV is shown. | |||
| 433 | This function is meant to be used as the `isearch-open-invisible-temporary' | 405 | This function is meant to be used as the `isearch-open-invisible-temporary' |
| 434 | property of an overlay." | 406 | property of an overlay." |
| 435 | (setq hs-headline | 407 | (setq hs-headline |
| 436 | (if hide-p | 408 | (if hide-p |
| 437 | nil | 409 | nil |
| 438 | (or hs-headline | 410 | (or hs-headline |
| 439 | (let ((start (overlay-start ov))) | 411 | (let ((start (overlay-start ov))) |
| 440 | (buffer-substring | 412 | (buffer-substring |
| 441 | (save-excursion (goto-char start) | 413 | (save-excursion (goto-char start) |
| 442 | (beginning-of-line) | 414 | (beginning-of-line) |
| 443 | (skip-chars-forward " \t") | 415 | (skip-chars-forward " \t") |
| 444 | (point)) | 416 | (point)) |
| 445 | start))))) | 417 | start))))) |
| 446 | (force-mode-line-update) | 418 | (force-mode-line-update) |
| 447 | (overlay-put ov 'invisible (and hide-p 'hs))) | 419 | (overlay-put ov 'invisible (and hide-p 'hs))) |
| 448 | 420 | ||
| @@ -464,10 +436,10 @@ on what kind of block is to be hidden." | |||
| 464 | ;; deprecated backward compatibility -- `block'<=>`code' | 436 | ;; deprecated backward compatibility -- `block'<=>`code' |
| 465 | (and (eq 'block hs-isearch-open) | 437 | (and (eq 'block hs-isearch-open) |
| 466 | (eq 'code flag))) | 438 | (eq 'code flag))) |
| 467 | (overlay-put overlay 'isearch-open-invisible 'hs-isearch-show) | 439 | (overlay-put overlay 'isearch-open-invisible 'hs-isearch-show) |
| 468 | (overlay-put overlay | 440 | (overlay-put overlay |
| 469 | 'isearch-open-invisible-temporary | 441 | 'isearch-open-invisible-temporary |
| 470 | 'hs-isearch-show-temporary)) | 442 | 'hs-isearch-show-temporary)) |
| 471 | overlay)))) | 443 | overlay)))) |
| 472 | 444 | ||
| 473 | (defun hs-forward-sexp (match-data arg) | 445 | (defun hs-forward-sexp (match-data arg) |
| @@ -523,10 +495,10 @@ and then further adjusted to be at the end of the line." | |||
| 523 | 495 | ||
| 524 | (defun hs-safety-is-job-n () | 496 | (defun hs-safety-is-job-n () |
| 525 | "Warn if `buffer-invisibility-spec' does not contain symbol `hs'." | 497 | "Warn if `buffer-invisibility-spec' does not contain symbol `hs'." |
| 526 | (unless (and (listp buffer-invisibility-spec) | 498 | (unless (and (listp buffer-invisibility-spec) |
| 527 | (assq 'hs buffer-invisibility-spec)) | 499 | (assq 'hs buffer-invisibility-spec)) |
| 528 | (message "Warning: `buffer-invisibility-spec' does not contain hs!!") | 500 | (message "Warning: `buffer-invisibility-spec' does not contain hs!!") |
| 529 | (sit-for 2))) | 501 | (sit-for 2))) |
| 530 | 502 | ||
| 531 | (defun hs-inside-comment-p () | 503 | (defun hs-inside-comment-p () |
| 532 | "Return non-nil if point is inside a comment, otherwise nil. | 504 | "Return non-nil if point is inside a comment, otherwise nil. |
| @@ -543,10 +515,15 @@ as cdr." | |||
| 543 | (let ((q (point))) | 515 | (let ((q (point))) |
| 544 | (when (or (looking-at hs-c-start-regexp) | 516 | (when (or (looking-at hs-c-start-regexp) |
| 545 | (re-search-backward hs-c-start-regexp (point-min) t)) | 517 | (re-search-backward hs-c-start-regexp (point-min) t)) |
| 518 | ;; first get to the beginning of this comment... | ||
| 519 | (while (and (not (bobp)) | ||
| 520 | (= (point) (progn (forward-comment -1) (point)))) | ||
| 521 | (forward-char -1)) | ||
| 522 | ;; ...then extend backwards | ||
| 546 | (forward-comment (- (buffer-size))) | 523 | (forward-comment (- (buffer-size))) |
| 547 | (skip-chars-forward " \t\n\f") | 524 | (skip-chars-forward " \t\n\f") |
| 548 | (let ((p (point)) | 525 | (let ((p (point)) |
| 549 | (not-hidable nil)) | 526 | (hidable t)) |
| 550 | (beginning-of-line) | 527 | (beginning-of-line) |
| 551 | (unless (looking-at (concat "[ \t]*" hs-c-start-regexp)) | 528 | (unless (looking-at (concat "[ \t]*" hs-c-start-regexp)) |
| 552 | ;; we are in this situation: (example) | 529 | ;; we are in this situation: (example) |
| @@ -565,19 +542,19 @@ as cdr." | |||
| 565 | (while (and (< (point) q) | 542 | (while (and (< (point) q) |
| 566 | (> (point) p) | 543 | (> (point) p) |
| 567 | (not (looking-at hs-c-start-regexp))) | 544 | (not (looking-at hs-c-start-regexp))) |
| 568 | (setq p (point));; use this to avoid an infinite cycle | 545 | (setq p (point)) ;; use this to avoid an infinite cycle |
| 569 | (forward-comment 1) | 546 | (forward-comment 1) |
| 570 | (skip-chars-forward " \t\n\f")) | 547 | (skip-chars-forward " \t\n\f")) |
| 571 | (when (or (not (looking-at hs-c-start-regexp)) | 548 | (when (or (not (looking-at hs-c-start-regexp)) |
| 572 | (> (point) q)) | 549 | (> (point) q)) |
| 573 | ;; we cannot hide this comment block | 550 | ;; we cannot hide this comment block |
| 574 | (setq not-hidable t))) | 551 | (setq hidable nil))) |
| 575 | ;; goto the end of the comment | 552 | ;; goto the end of the comment |
| 576 | (forward-comment (buffer-size)) | 553 | (forward-comment (buffer-size)) |
| 577 | (skip-chars-backward " \t\n\f") | 554 | (skip-chars-backward " \t\n\f") |
| 578 | (end-of-line) | 555 | (end-of-line) |
| 579 | (when (>= (point) q) | 556 | (when (>= (point) q) |
| 580 | (list (if not-hidable nil p) (point)))))))) | 557 | (list (and hidable p) (point)))))))) |
| 581 | 558 | ||
| 582 | (defun hs-grok-mode-type () | 559 | (defun hs-grok-mode-type () |
| 583 | "Set up hideshow variables for new buffers. | 560 | "Set up hideshow variables for new buffers. |
| @@ -645,7 +622,7 @@ Return point, or nil if original point was not in a block." | |||
| 645 | (hs-hide-level-recursive (1- arg) minp maxp) | 622 | (hs-hide-level-recursive (1- arg) minp maxp) |
| 646 | (goto-char (match-beginning hs-block-start-mdata-select)) | 623 | (goto-char (match-beginning hs-block-start-mdata-select)) |
| 647 | (hs-hide-block-at-point t))) | 624 | (hs-hide-block-at-point t))) |
| 648 | (hs-safety-is-job-n) | 625 | (hs-safety-is-job-n) |
| 649 | (goto-char maxp)) | 626 | (goto-char maxp)) |
| 650 | 627 | ||
| 651 | (defmacro hs-life-goes-on (&rest body) | 628 | (defmacro hs-life-goes-on (&rest body) |
| @@ -675,8 +652,8 @@ and `case-fold-search' are both t." | |||
| 675 | (let ((overlays (overlays-at (point))) | 652 | (let ((overlays (overlays-at (point))) |
| 676 | (found nil)) | 653 | (found nil)) |
| 677 | (while (and (not found) (overlayp (car overlays))) | 654 | (while (and (not found) (overlayp (car overlays))) |
| 678 | (setq found (overlay-get (car overlays) 'hs) | 655 | (setq found (overlay-get (car overlays) 'hs) |
| 679 | overlays (cdr overlays))) | 656 | overlays (cdr overlays))) |
| 680 | found))) | 657 | found))) |
| 681 | 658 | ||
| 682 | (defun hs-c-like-adjust-block-beginning (initial) | 659 | (defun hs-c-like-adjust-block-beginning (initial) |
| @@ -724,7 +701,7 @@ If `hs-hide-comments-when-hiding-all' is non-nil, also hide the comments." | |||
| 724 | (funcall hs-hide-all-non-comment-function) | 701 | (funcall hs-hide-all-non-comment-function) |
| 725 | (hs-hide-block-at-point t))) | 702 | (hs-hide-block-at-point t))) |
| 726 | ;; found a comment, probably | 703 | ;; found a comment, probably |
| 727 | (let ((c-reg (hs-inside-comment-p))) ; blech! | 704 | (let ((c-reg (hs-inside-comment-p))) ; blech! |
| 728 | (when (and c-reg (car c-reg)) | 705 | (when (and c-reg (car c-reg)) |
| 729 | (if (> (count-lines (car c-reg) (nth 1 c-reg)) 1) | 706 | (if (> (count-lines (car c-reg) (nth 1 c-reg)) 1) |
| 730 | (hs-hide-block-at-point t c-reg) | 707 | (hs-hide-block-at-point t c-reg) |
| @@ -772,18 +749,15 @@ See documentation for functions `hs-hide-block' and `run-hooks'." | |||
| 772 | (or | 749 | (or |
| 773 | ;; first see if we have something at the end of the line | 750 | ;; first see if we have something at the end of the line |
| 774 | (catch 'eol-begins-hidden-region-p | 751 | (catch 'eol-begins-hidden-region-p |
| 775 | (let ((here (point)) | 752 | (let ((here (point))) |
| 776 | (ovs (save-excursion (end-of-line) (overlays-at (point))))) | 753 | (dolist (ov (save-excursion (end-of-line) (overlays-at (point)))) |
| 777 | (while ovs | 754 | (when (overlay-get ov 'hs) |
| 778 | (let ((ov (car ovs))) | 755 | (goto-char |
| 779 | (when (overlay-get ov 'hs) | 756 | (cond (end (overlay-end ov)) |
| 780 | (goto-char | 757 | ((eq 'comment (overlay-get ov 'hs)) here) |
| 781 | (cond (end (overlay-end ov)) | 758 | (t (+ (overlay-start ov) (overlay-get ov 'hs-ofs))))) |
| 782 | ((eq 'comment (overlay-get ov 'hs)) here) | 759 | (delete-overlay ov) |
| 783 | (t (+ (overlay-start ov) (overlay-get ov 'hs-ofs))))) | 760 | (throw 'eol-begins-hidden-region-p t))) |
| 784 | (delete-overlay ov) | ||
| 785 | (throw 'eol-begins-hidden-region-p t))) | ||
| 786 | (setq ovs (cdr ovs))) | ||
| 787 | nil)) | 761 | nil)) |
| 788 | ;; not immediately obvious, look for a suitable block | 762 | ;; not immediately obvious, look for a suitable block |
| 789 | (let ((c-reg (hs-inside-comment-p)) | 763 | (let ((c-reg (hs-inside-comment-p)) |
| @@ -870,9 +844,9 @@ Key bindings: | |||
| 870 | 844 | ||
| 871 | (interactive "P") | 845 | (interactive "P") |
| 872 | (setq hs-headline nil | 846 | (setq hs-headline nil |
| 873 | hs-minor-mode (if (null arg) | 847 | hs-minor-mode (if (null arg) |
| 874 | (not hs-minor-mode) | 848 | (not hs-minor-mode) |
| 875 | (> (prefix-numeric-value arg) 0))) | 849 | (> (prefix-numeric-value arg) 0))) |
| 876 | (if hs-minor-mode | 850 | (if hs-minor-mode |
| 877 | (progn | 851 | (progn |
| 878 | (hs-grok-mode-type) | 852 | (hs-grok-mode-type) |
| @@ -912,27 +886,19 @@ Key bindings: | |||
| 912 | ))))) | 886 | ))))) |
| 913 | 887 | ||
| 914 | ;; some housekeeping | 888 | ;; some housekeeping |
| 915 | (or (assq 'hs-minor-mode minor-mode-map-alist) | 889 | (add-to-list 'minor-mode-map-alist (cons 'hs-minor-mode hs-minor-mode-map)) |
| 916 | (setq minor-mode-map-alist | 890 | (add-to-list 'minor-mode-alist '(hs-minor-mode " hs") t) |
| 917 | (cons (cons 'hs-minor-mode hs-minor-mode-map) | ||
| 918 | minor-mode-map-alist))) | ||
| 919 | (or (assq 'hs-minor-mode minor-mode-alist) | ||
| 920 | (setq minor-mode-alist (append minor-mode-alist | ||
| 921 | (list '(hs-minor-mode " hs"))))) | ||
| 922 | 891 | ||
| 923 | ;; make some variables permanently buffer-local | 892 | ;; make some variables permanently buffer-local |
| 924 | (let ((vars '(hs-minor-mode | 893 | (dolist (var '(hs-minor-mode |
| 925 | hs-c-start-regexp | 894 | hs-c-start-regexp |
| 926 | hs-block-start-regexp | 895 | hs-block-start-regexp |
| 927 | hs-block-start-mdata-select | 896 | hs-block-start-mdata-select |
| 928 | hs-block-end-regexp | 897 | hs-block-end-regexp |
| 929 | hs-forward-sexp-func | 898 | hs-forward-sexp-func |
| 930 | hs-adjust-block-beginning))) | 899 | hs-adjust-block-beginning)) |
| 931 | (while vars | 900 | (make-variable-buffer-local var) |
| 932 | (let ((var (car vars))) | 901 | (put var 'permanent-local t)) |
| 933 | (make-variable-buffer-local var) | ||
| 934 | (put var 'permanent-local t)) | ||
| 935 | (setq vars (cdr vars)))) | ||
| 936 | 902 | ||
| 937 | ;;--------------------------------------------------------------------------- | 903 | ;;--------------------------------------------------------------------------- |
| 938 | ;; that's it | 904 | ;; that's it |
diff --git a/lisp/progmodes/idlwave.el b/lisp/progmodes/idlwave.el index 45694b57b99..a17ba3e844f 100644 --- a/lisp/progmodes/idlwave.el +++ b/lisp/progmodes/idlwave.el | |||
| @@ -2571,7 +2571,9 @@ If not in a statement just moves to end of line. Returns position." | |||
| 2571 | (let ((save-point (point))) | 2571 | (let ((save-point (point))) |
| 2572 | (when (re-search-forward ".*&" lim t) | 2572 | (when (re-search-forward ".*&" lim t) |
| 2573 | (goto-char (match-end 0)) | 2573 | (goto-char (match-end 0)) |
| 2574 | (if (idlwave-quoted) (goto-char save-point))) | 2574 | (if (idlwave-quoted) |
| 2575 | (goto-char save-point) | ||
| 2576 | (if (eq (char-after (- (point) 2)) ?&) (goto-char save-point)))) | ||
| 2575 | (point))) | 2577 | (point))) |
| 2576 | 2578 | ||
| 2577 | (defun idlwave-skip-label-or-case () | 2579 | (defun idlwave-skip-label-or-case () |
diff --git a/lisp/replace.el b/lisp/replace.el index 646f693cd7f..775ad0ffb05 100644 --- a/lisp/replace.el +++ b/lisp/replace.el | |||
| @@ -735,16 +735,17 @@ Alternatively, click \\[occur-mode-mouse-goto] on an item to go to it. | |||
| 735 | Compatibility function for \\[next-error] invocations." | 735 | Compatibility function for \\[next-error] invocations." |
| 736 | (interactive "p") | 736 | (interactive "p") |
| 737 | ;; we need to run occur-find-match from within the Occur buffer | 737 | ;; we need to run occur-find-match from within the Occur buffer |
| 738 | (with-current-buffer | 738 | (with-current-buffer |
| 739 | (if (next-error-buffer-p (current-buffer)) | 739 | (if (next-error-buffer-p (current-buffer)) |
| 740 | (current-buffer) | 740 | (current-buffer) |
| 741 | (next-error-find-buffer nil nil (lambda() (eq major-mode 'occur-mode)))) | 741 | (next-error-find-buffer nil nil (lambda() (eq major-mode 'occur-mode)))) |
| 742 | 742 | ||
| 743 | (when reset | 743 | (goto-char (cond (reset (point-min)) |
| 744 | (goto-char (point-min))) | 744 | ((< argp 0) (line-beginning-position)) |
| 745 | ((line-end-position)))) | ||
| 745 | (occur-find-match | 746 | (occur-find-match |
| 746 | (abs (prefix-numeric-value argp)) | 747 | (abs argp) |
| 747 | (if (> 0 (prefix-numeric-value argp)) | 748 | (if (> 0 argp) |
| 748 | #'previous-single-property-change | 749 | #'previous-single-property-change |
| 749 | #'next-single-property-change) | 750 | #'next-single-property-change) |
| 750 | "No more matches") | 751 | "No more matches") |
| @@ -752,6 +753,20 @@ Compatibility function for \\[next-error] invocations." | |||
| 752 | (set-window-point (get-buffer-window (current-buffer)) (point)) | 753 | (set-window-point (get-buffer-window (current-buffer)) (point)) |
| 753 | (occur-mode-goto-occurrence))) | 754 | (occur-mode-goto-occurrence))) |
| 754 | 755 | ||
| 756 | (defface match | ||
| 757 | '((((class color) (min-colors 88) (background light)) | ||
| 758 | :background "Tan") | ||
| 759 | (((class color) (min-colors 88) (background dark)) | ||
| 760 | :background "RoyalBlue4") | ||
| 761 | (((class color) (min-colors 8)) | ||
| 762 | :background "blue" :foreground "white") | ||
| 763 | (((type tty) (class mono)) | ||
| 764 | :inverse-video t) | ||
| 765 | (t :background "gray")) | ||
| 766 | "Face used to highlight matches permanently." | ||
| 767 | :group 'matching | ||
| 768 | :version "21.4") | ||
| 769 | |||
| 755 | (defcustom list-matching-lines-default-context-lines 0 | 770 | (defcustom list-matching-lines-default-context-lines 0 |
| 756 | "*Default number of context lines included around `list-matching-lines' matches. | 771 | "*Default number of context lines included around `list-matching-lines' matches. |
| 757 | A negative number means to include that many lines before the match. | 772 | A negative number means to include that many lines before the match. |
| @@ -761,7 +776,7 @@ A positive number means to include that many lines both before and after." | |||
| 761 | 776 | ||
| 762 | (defalias 'list-matching-lines 'occur) | 777 | (defalias 'list-matching-lines 'occur) |
| 763 | 778 | ||
| 764 | (defcustom list-matching-lines-face 'bold | 779 | (defcustom list-matching-lines-face 'match |
| 765 | "*Face used by \\[list-matching-lines] to show the text that matches. | 780 | "*Face used by \\[list-matching-lines] to show the text that matches. |
| 766 | If the value is nil, don't highlight the matching portions specially." | 781 | If the value is nil, don't highlight the matching portions specially." |
| 767 | :type 'face | 782 | :type 'face |
| @@ -776,18 +791,22 @@ If the value is nil, don't highlight the buffer names specially." | |||
| 776 | (defun occur-accumulate-lines (count &optional keep-props) | 791 | (defun occur-accumulate-lines (count &optional keep-props) |
| 777 | (save-excursion | 792 | (save-excursion |
| 778 | (let ((forwardp (> count 0)) | 793 | (let ((forwardp (> count 0)) |
| 779 | (result nil)) | 794 | result beg end) |
| 780 | (while (not (or (zerop count) | 795 | (while (not (or (zerop count) |
| 781 | (if forwardp | 796 | (if forwardp |
| 782 | (eobp) | 797 | (eobp) |
| 783 | (bobp)))) | 798 | (bobp)))) |
| 784 | (setq count (+ count (if forwardp -1 1))) | 799 | (setq count (+ count (if forwardp -1 1))) |
| 800 | (setq beg (line-beginning-position) | ||
| 801 | end (line-end-position)) | ||
| 802 | (if (and keep-props (boundp 'jit-lock-mode) jit-lock-mode | ||
| 803 | (text-property-not-all beg end 'fontified t)) | ||
| 804 | (jit-lock-fontify-now beg end)) | ||
| 785 | (push | 805 | (push |
| 786 | (funcall (if keep-props | 806 | (funcall (if keep-props |
| 787 | #'buffer-substring | 807 | #'buffer-substring |
| 788 | #'buffer-substring-no-properties) | 808 | #'buffer-substring-no-properties) |
| 789 | (line-beginning-position) | 809 | beg end) |
| 790 | (line-end-position)) | ||
| 791 | result) | 810 | result) |
| 792 | (forward-line (if forwardp 1 -1))) | 811 | (forward-line (if forwardp 1 -1))) |
| 793 | (nreverse result)))) | 812 | (nreverse result)))) |
| @@ -982,14 +1001,17 @@ See also `multi-occur'." | |||
| 982 | (when (setq endpt (re-search-forward regexp nil t)) | 1001 | (when (setq endpt (re-search-forward regexp nil t)) |
| 983 | (setq matches (1+ matches)) ;; increment match count | 1002 | (setq matches (1+ matches)) ;; increment match count |
| 984 | (setq matchbeg (match-beginning 0)) | 1003 | (setq matchbeg (match-beginning 0)) |
| 985 | (setq begpt (save-excursion | ||
| 986 | (goto-char matchbeg) | ||
| 987 | (line-beginning-position))) | ||
| 988 | (setq lines (+ lines (1- (count-lines origpt endpt)))) | 1004 | (setq lines (+ lines (1- (count-lines origpt endpt)))) |
| 1005 | (save-excursion | ||
| 1006 | (goto-char matchbeg) | ||
| 1007 | (setq begpt (line-beginning-position) | ||
| 1008 | endpt (line-end-position))) | ||
| 989 | (setq marker (make-marker)) | 1009 | (setq marker (make-marker)) |
| 990 | (set-marker marker matchbeg) | 1010 | (set-marker marker matchbeg) |
| 991 | (setq curstring (buffer-substring begpt | 1011 | (if (and keep-props (boundp 'jit-lock-mode) jit-lock-mode |
| 992 | (line-end-position))) | 1012 | (text-property-not-all begpt endpt 'fontified t)) |
| 1013 | (jit-lock-fontify-now begpt endpt)) | ||
| 1014 | (setq curstring (buffer-substring begpt endpt)) | ||
| 993 | ;; Depropertize the string, and maybe | 1015 | ;; Depropertize the string, and maybe |
| 994 | ;; highlight the matches | 1016 | ;; highlight the matches |
| 995 | (let ((len (length curstring)) | 1017 | (let ((len (length curstring)) |
| @@ -998,17 +1020,15 @@ See also `multi-occur'." | |||
| 998 | (set-text-properties 0 len nil curstring)) | 1020 | (set-text-properties 0 len nil curstring)) |
| 999 | (while (and (< start len) | 1021 | (while (and (< start len) |
| 1000 | (string-match regexp curstring start)) | 1022 | (string-match regexp curstring start)) |
| 1001 | (add-text-properties (match-beginning 0) | 1023 | (add-text-properties |
| 1002 | (match-end 0) | 1024 | (match-beginning 0) (match-end 0) |
| 1003 | (append | 1025 | (append |
| 1004 | `(occur-match t) | 1026 | `(occur-match t) |
| 1005 | (when match-face | 1027 | (when match-face |
| 1006 | ;; Use `face' rather than | 1028 | ;; Use `face' rather than `font-lock-face' here |
| 1007 | ;; `font-lock-face' here | 1029 | ;; so as to override faces copied from the buffer. |
| 1008 | ;; so as to override faces | 1030 | `(face ,match-face))) |
| 1009 | ;; copied from the buffer. | 1031 | curstring) |
| 1010 | `(face ,match-face))) | ||
| 1011 | curstring) | ||
| 1012 | (setq start (match-end 0)))) | 1032 | (setq start (match-end 0)))) |
| 1013 | ;; Generate the string to insert for this match | 1033 | ;; Generate the string to insert for this match |
| 1014 | (let* ((out-line | 1034 | (let* ((out-line |
| @@ -1019,7 +1039,10 @@ See also `multi-occur'." | |||
| 1019 | (when prefix-face | 1039 | (when prefix-face |
| 1020 | `(font-lock-face prefix-face)) | 1040 | `(font-lock-face prefix-face)) |
| 1021 | '(occur-prefix t))) | 1041 | '(occur-prefix t))) |
| 1022 | curstring | 1042 | ;; We don't put `mouse-face' on the newline, |
| 1043 | ;; because that loses. And don't put it | ||
| 1044 | ;; on context lines to reduce flicker. | ||
| 1045 | (propertize curstring 'mouse-face 'highlight) | ||
| 1023 | "\n")) | 1046 | "\n")) |
| 1024 | (data | 1047 | (data |
| 1025 | (if (= nlines 0) | 1048 | (if (= nlines 0) |
| @@ -1043,10 +1066,7 @@ See also `multi-occur'." | |||
| 1043 | (insert "-------\n")) | 1066 | (insert "-------\n")) |
| 1044 | (add-text-properties | 1067 | (add-text-properties |
| 1045 | beg end | 1068 | beg end |
| 1046 | `(occur-target ,marker help-echo "mouse-2: go to this occurrence")) | 1069 | `(occur-target ,marker help-echo "mouse-2: go to this occurrence"))))) |
| 1047 | ;; We don't put `mouse-face' on the newline, | ||
| 1048 | ;; because that loses. | ||
| 1049 | (add-text-properties beg (1- end) '(mouse-face highlight))))) | ||
| 1050 | (goto-char endpt)) | 1070 | (goto-char endpt)) |
| 1051 | (if endpt | 1071 | (if endpt |
| 1052 | (progn | 1072 | (progn |
| @@ -1283,6 +1303,7 @@ make, or the user didn't cancel the call." | |||
| 1283 | 1303 | ||
| 1284 | (isearch-string isearch-string) | 1304 | (isearch-string isearch-string) |
| 1285 | (isearch-regexp isearch-regexp) | 1305 | (isearch-regexp isearch-regexp) |
| 1306 | (isearch-case-fold-search isearch-case-fold-search) | ||
| 1286 | (message | 1307 | (message |
| 1287 | (if query-flag | 1308 | (if query-flag |
| 1288 | (substitute-command-keys | 1309 | (substitute-command-keys |
| @@ -1315,9 +1336,11 @@ make, or the user didn't cancel the call." | |||
| 1315 | (if regexp-flag from-string | 1336 | (if regexp-flag from-string |
| 1316 | (regexp-quote from-string)) | 1337 | (regexp-quote from-string)) |
| 1317 | "\\b"))) | 1338 | "\\b"))) |
| 1318 | (if (eq query-replace-highlight 'isearch) | 1339 | (when query-replace-lazy-highlight |
| 1319 | (setq isearch-string search-string | 1340 | (setq isearch-string search-string |
| 1320 | isearch-regexp regexp-flag)) | 1341 | isearch-regexp (or delimited-flag regexp-flag) |
| 1342 | isearch-case-fold-search case-fold-search | ||
| 1343 | isearch-lazy-highlight-last-string nil)) | ||
| 1321 | 1344 | ||
| 1322 | (push-mark) | 1345 | (push-mark) |
| 1323 | (undo-boundary) | 1346 | (undo-boundary) |
| @@ -1535,13 +1558,15 @@ make, or the user didn't cancel the call." | |||
| 1535 | (append (listify-key-sequence key) | 1558 | (append (listify-key-sequence key) |
| 1536 | unread-command-events)) | 1559 | unread-command-events)) |
| 1537 | (setq done t))) | 1560 | (setq done t))) |
| 1538 | (when (eq query-replace-highlight 'isearch) | 1561 | (when query-replace-lazy-highlight |
| 1539 | ;; Force isearch rehighlighting | 1562 | ;; Restore isearch data for lazy highlighting |
| 1540 | (if (not (memq def '(skip backup))) | 1563 | ;; in case of isearching during recursive edit |
| 1541 | (setq isearch-lazy-highlight-last-string nil)) | ||
| 1542 | ;; Restore isearch data in case of isearching during edit | ||
| 1543 | (setq isearch-string search-string | 1564 | (setq isearch-string search-string |
| 1544 | isearch-regexp regexp-flag))) | 1565 | isearch-regexp (or delimited-flag regexp-flag) |
| 1566 | isearch-case-fold-search case-fold-search) | ||
| 1567 | ;; Force lazy rehighlighting only after replacements | ||
| 1568 | (if (not (memq def '(skip backup))) | ||
| 1569 | (setq isearch-lazy-highlight-last-string nil)))) | ||
| 1545 | ;; Record previous position for ^ when we move on. | 1570 | ;; Record previous position for ^ when we move on. |
| 1546 | ;; Change markers to numbers in the match data | 1571 | ;; Change markers to numbers in the match data |
| 1547 | ;; since lots of markers slow down editing. | 1572 | ;; since lots of markers slow down editing. |
| @@ -1576,38 +1601,45 @@ make, or the user didn't cancel the call." | |||
| 1576 | (if (= replace-count 1) "" "s"))) | 1601 | (if (= replace-count 1) "" "s"))) |
| 1577 | (and keep-going stack))) | 1602 | (and keep-going stack))) |
| 1578 | 1603 | ||
| 1579 | (defcustom query-replace-highlight | 1604 | (defcustom query-replace-highlight t |
| 1580 | (if (and search-highlight isearch-lazy-highlight) 'isearch t) | 1605 | "*Non-nil means to highlight matches during query replacement." |
| 1581 | "*Non-nil means to highlight words during query replacement. | 1606 | :type 'boolean |
| 1582 | If `isearch', use isearch highlighting for query replacement." | ||
| 1583 | :type '(choice (const :tag "Highlight" t) | ||
| 1584 | (const :tag "No highlighting" nil) | ||
| 1585 | (const :tag "Isearch highlighting" 'isearch)) | ||
| 1586 | :group 'matching) | 1607 | :group 'matching) |
| 1587 | 1608 | ||
| 1609 | (defcustom query-replace-lazy-highlight t | ||
| 1610 | "*Controls the lazy-highlighting during query replacements. | ||
| 1611 | When non-nil, all text in the buffer matching the current match | ||
| 1612 | is highlighted lazily using isearch lazy highlighting (see | ||
| 1613 | `isearch-lazy-highlight-initial-delay' and | ||
| 1614 | `isearch-lazy-highlight-interval')." | ||
| 1615 | :type 'boolean | ||
| 1616 | :group 'matching | ||
| 1617 | :version "21.4") | ||
| 1618 | |||
| 1619 | (defface query-replace | ||
| 1620 | '((t (:inherit isearch))) | ||
| 1621 | "Face for highlighting query replacement matches." | ||
| 1622 | :group 'matching | ||
| 1623 | :version "21.4") | ||
| 1624 | |||
| 1588 | (defvar replace-overlay nil) | 1625 | (defvar replace-overlay nil) |
| 1589 | 1626 | ||
| 1627 | (defun replace-highlight (beg end) | ||
| 1628 | (if query-replace-highlight | ||
| 1629 | (if replace-overlay | ||
| 1630 | (move-overlay replace-overlay beg end (current-buffer)) | ||
| 1631 | (setq replace-overlay (make-overlay beg end)) | ||
| 1632 | (overlay-put replace-overlay 'priority 1) ;higher than lazy overlays | ||
| 1633 | (overlay-put replace-overlay 'face 'query-replace))) | ||
| 1634 | (if query-replace-lazy-highlight | ||
| 1635 | (isearch-lazy-highlight-new-loop))) | ||
| 1636 | |||
| 1590 | (defun replace-dehighlight () | 1637 | (defun replace-dehighlight () |
| 1591 | (cond ((eq query-replace-highlight 'isearch) | 1638 | (when replace-overlay |
| 1592 | (isearch-dehighlight t) | 1639 | (delete-overlay replace-overlay)) |
| 1593 | (isearch-lazy-highlight-cleanup isearch-lazy-highlight-cleanup) | 1640 | (when query-replace-lazy-highlight |
| 1594 | (setq isearch-lazy-highlight-last-string nil)) | 1641 | (isearch-lazy-highlight-cleanup isearch-lazy-highlight-cleanup) |
| 1595 | (query-replace-highlight | 1642 | (setq isearch-lazy-highlight-last-string nil))) |
| 1596 | (when replace-overlay | ||
| 1597 | (delete-overlay replace-overlay) | ||
| 1598 | (setq replace-overlay nil))))) | ||
| 1599 | |||
| 1600 | (defun replace-highlight (start end) | ||
| 1601 | (cond ((eq query-replace-highlight 'isearch) | ||
| 1602 | (isearch-highlight start end) | ||
| 1603 | (isearch-lazy-highlight-new-loop)) | ||
| 1604 | (query-replace-highlight | ||
| 1605 | (if replace-overlay | ||
| 1606 | (move-overlay replace-overlay start end (current-buffer)) | ||
| 1607 | (setq replace-overlay (make-overlay start end)) | ||
| 1608 | (overlay-put replace-overlay 'face | ||
| 1609 | (if (facep 'query-replace) | ||
| 1610 | 'query-replace 'region)))))) | ||
| 1611 | 1643 | ||
| 1612 | ;; arch-tag: 16b4cd61-fd40-497b-b86f-b667c4cf88e4 | 1644 | ;; arch-tag: 16b4cd61-fd40-497b-b86f-b667c4cf88e4 |
| 1613 | ;;; replace.el ends here | 1645 | ;;; replace.el ends here |
diff --git a/lisp/simple.el b/lisp/simple.el index 4a95b18bcb9..a87a30e1786 100644 --- a/lisp/simple.el +++ b/lisp/simple.el | |||
| @@ -645,10 +645,6 @@ If BACKWARD-ONLY is non-nil, only delete spaces before point." | |||
| 645 | (skip-chars-forward " \t") | 645 | (skip-chars-forward " \t") |
| 646 | (constrain-to-field nil orig-pos t))))) | 646 | (constrain-to-field nil orig-pos t))))) |
| 647 | 647 | ||
| 648 | (defvar inhibit-mark-movement nil | ||
| 649 | "If non-nil, movement commands, such as \\[beginning-of-buffer], \ | ||
| 650 | do not set the mark.") | ||
| 651 | |||
| 652 | (defun beginning-of-buffer (&optional arg) | 648 | (defun beginning-of-buffer (&optional arg) |
| 653 | "Move point to the beginning of the buffer; leave mark at previous position. | 649 | "Move point to the beginning of the buffer; leave mark at previous position. |
| 654 | With \\[universal-argument] prefix, do not set mark at previous position. | 650 | With \\[universal-argument] prefix, do not set mark at previous position. |
| @@ -660,8 +656,7 @@ of the accessible part of the buffer. | |||
| 660 | Don't use this command in Lisp programs! | 656 | Don't use this command in Lisp programs! |
| 661 | \(goto-char (point-min)) is faster and avoids clobbering the mark." | 657 | \(goto-char (point-min)) is faster and avoids clobbering the mark." |
| 662 | (interactive "P") | 658 | (interactive "P") |
| 663 | (or inhibit-mark-movement | 659 | (or (consp arg) |
| 664 | (consp arg) | ||
| 665 | (and transient-mark-mode mark-active) | 660 | (and transient-mark-mode mark-active) |
| 666 | (push-mark)) | 661 | (push-mark)) |
| 667 | (let ((size (- (point-max) (point-min)))) | 662 | (let ((size (- (point-max) (point-min)))) |
| @@ -686,8 +681,7 @@ of the accessible part of the buffer. | |||
| 686 | Don't use this command in Lisp programs! | 681 | Don't use this command in Lisp programs! |
| 687 | \(goto-char (point-max)) is faster and avoids clobbering the mark." | 682 | \(goto-char (point-max)) is faster and avoids clobbering the mark." |
| 688 | (interactive "P") | 683 | (interactive "P") |
| 689 | (or inhibit-mark-movement | 684 | (or (consp arg) |
| 690 | (consp arg) | ||
| 691 | (and transient-mark-mode mark-active) | 685 | (and transient-mark-mode mark-active) |
| 692 | (push-mark)) | 686 | (push-mark)) |
| 693 | (let ((size (- (point-max) (point-min)))) | 687 | (let ((size (- (point-max) (point-min)))) |
| @@ -1490,6 +1484,17 @@ is not *inside* the region START...END." | |||
| 1490 | (t | 1484 | (t |
| 1491 | '(0 . 0))) | 1485 | '(0 . 0))) |
| 1492 | '(0 . 0))) | 1486 | '(0 . 0))) |
| 1487 | |||
| 1488 | ;; When the first undo batch in an undo list is longer than undo-outer-limit, | ||
| 1489 | ;; this function gets called to ask the user what to do. | ||
| 1490 | ;; Garbage collection is inhibited around the call, | ||
| 1491 | ;; so it had better not do a lot of consing. | ||
| 1492 | (setq undo-outer-limit-function 'undo-outer-limit-truncate) | ||
| 1493 | (defun undo-outer-limit-truncate (size) | ||
| 1494 | (if (yes-or-no-p (format "Buffer %s undo info is %d bytes long; discard it? " | ||
| 1495 | (buffer-name) size)) | ||
| 1496 | (progn (setq buffer-undo-list nil) t) | ||
| 1497 | nil)) | ||
| 1493 | 1498 | ||
| 1494 | (defvar shell-command-history nil | 1499 | (defvar shell-command-history nil |
| 1495 | "History list for some commands that read shell commands.") | 1500 | "History list for some commands that read shell commands.") |
diff --git a/lisp/textmodes/ispell.el b/lisp/textmodes/ispell.el index f6a1c1d5cce..f3a7616bfd6 100644 --- a/lisp/textmodes/ispell.el +++ b/lisp/textmodes/ispell.el | |||
| @@ -1975,7 +1975,7 @@ SPC: Accept word this time. | |||
| 1975 | (sit-for 5) | 1975 | (sit-for 5) |
| 1976 | (kill-buffer "*Ispell Help*")) | 1976 | (kill-buffer "*Ispell Help*")) |
| 1977 | (unwind-protect | 1977 | (unwind-protect |
| 1978 | (progn | 1978 | (let ((resize-mini-windows 'grow-only)) |
| 1979 | (select-window (minibuffer-window)) | 1979 | (select-window (minibuffer-window)) |
| 1980 | (erase-buffer) | 1980 | (erase-buffer) |
| 1981 | (message nil) | 1981 | (message nil) |
diff --git a/lisp/tooltip.el b/lisp/tooltip.el index 5bcb28dde52..2e60df02459 100644 --- a/lisp/tooltip.el +++ b/lisp/tooltip.el | |||
| @@ -1,6 +1,7 @@ | |||
| 1 | ;;; tooltip.el --- show tooltip windows | 1 | ;;; tooltip.el --- show tooltip windows |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 1997, 1999, 2000, 2001, 2004 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 1997, 1999, 2000, 2001, 2002, 2003, 2004 |
| 4 | ;; Free Software Foundation, Inc. | ||
| 4 | 5 | ||
| 5 | ;; Author: Gerd Moellmann <gerd@acm.org> | 6 | ;; Author: Gerd Moellmann <gerd@acm.org> |
| 6 | ;; Keywords: help c mouse tools | 7 | ;; Keywords: help c mouse tools |
| @@ -476,7 +477,25 @@ This function must return nil if it doesn't handle EVENT." | |||
| 476 | (defun tooltip-show-help-function (msg) | 477 | (defun tooltip-show-help-function (msg) |
| 477 | "Function installed as `show-help-function'. | 478 | "Function installed as `show-help-function'. |
| 478 | MSG is either a help string to display, or nil to cancel the display." | 479 | MSG is either a help string to display, or nil to cancel the display." |
| 479 | (let ((previous-help tooltip-help-message)) | 480 | (let ((previous-help tooltip-help-message) |
| 481 | mp pos) | ||
| 482 | (if (and mouse-1-click-follows-link | ||
| 483 | (stringp msg) | ||
| 484 | (save-match-data | ||
| 485 | (string-match "^mouse-2" msg)) | ||
| 486 | (setq mp (mouse-pixel-position)) | ||
| 487 | (consp (setq pos (cdr mp))) | ||
| 488 | (setq pos (posn-at-x-y (car pos) (cdr pos) (car mp))) | ||
| 489 | (windowp (posn-window pos))) | ||
| 490 | (with-current-buffer (window-buffer (posn-window pos)) | ||
| 491 | (if (mouse-on-link-p (posn-point pos)) | ||
| 492 | (setq msg (concat | ||
| 493 | (cond | ||
| 494 | ((eq mouse-1-click-follows-link 'double) "double-") | ||
| 495 | ((and (integerp mouse-1-click-follows-link) | ||
| 496 | (< mouse-1-click-follows-link 0)) "Long ") | ||
| 497 | (t "")) | ||
| 498 | "mouse-1" (substring msg 7)))))) | ||
| 480 | (setq tooltip-help-message msg) | 499 | (setq tooltip-help-message msg) |
| 481 | (cond ((null msg) | 500 | (cond ((null msg) |
| 482 | ;; Cancel display. This also cancels a delayed tip, if | 501 | ;; Cancel display. This also cancels a delayed tip, if |
diff --git a/lisp/vc.el b/lisp/vc.el index 63e9be651d9..64de0351922 100644 --- a/lisp/vc.el +++ b/lisp/vc.el | |||
| @@ -2836,7 +2836,7 @@ Uses `rcs2log' which only works for RCS and CVS." | |||
| 2836 | (pop-to-buffer | 2836 | (pop-to-buffer |
| 2837 | (set-buffer (get-buffer-create "*vc*"))) | 2837 | (set-buffer (get-buffer-create "*vc*"))) |
| 2838 | (erase-buffer) | 2838 | (erase-buffer) |
| 2839 | (insert-file tempfile) | 2839 | (insert-file-contents tempfile) |
| 2840 | "failed")) | 2840 | "failed")) |
| 2841 | (setq default-directory (file-name-directory changelog)) | 2841 | (setq default-directory (file-name-directory changelog)) |
| 2842 | (delete-file tempfile))))) | 2842 | (delete-file tempfile))))) |
diff --git a/lisp/wid-edit.el b/lisp/wid-edit.el index f3d7657984f..46eb608c690 100644 --- a/lisp/wid-edit.el +++ b/lisp/wid-edit.el | |||
| @@ -327,6 +327,7 @@ new value.") | |||
| 327 | (let ((keymap (widget-get widget :keymap)) | 327 | (let ((keymap (widget-get widget :keymap)) |
| 328 | (face (or (widget-get widget :value-face) 'widget-field-face)) | 328 | (face (or (widget-get widget :value-face) 'widget-field-face)) |
| 329 | (help-echo (widget-get widget :help-echo)) | 329 | (help-echo (widget-get widget :help-echo)) |
| 330 | (follow-link (widget-get widget :follow-link)) | ||
| 330 | (rear-sticky | 331 | (rear-sticky |
| 331 | (or (not widget-field-add-space) (widget-get widget :size)))) | 332 | (or (not widget-field-add-space) (widget-get widget :size)))) |
| 332 | (if (functionp help-echo) | 333 | (if (functionp help-echo) |
| @@ -345,6 +346,7 @@ new value.") | |||
| 345 | ;; works in the field when, say, Custom uses `suppress-keymap'. | 346 | ;; works in the field when, say, Custom uses `suppress-keymap'. |
| 346 | (overlay-put overlay 'local-map keymap) | 347 | (overlay-put overlay 'local-map keymap) |
| 347 | (overlay-put overlay 'face face) | 348 | (overlay-put overlay 'face face) |
| 349 | (overlay-put overlay 'follow-link follow-link) | ||
| 348 | (overlay-put overlay 'help-echo help-echo)) | 350 | (overlay-put overlay 'help-echo help-echo)) |
| 349 | (setq to (1- to)) | 351 | (setq to (1- to)) |
| 350 | (setq rear-sticky t)) | 352 | (setq rear-sticky t)) |
| @@ -354,6 +356,7 @@ new value.") | |||
| 354 | (overlay-put overlay 'field widget) | 356 | (overlay-put overlay 'field widget) |
| 355 | (overlay-put overlay 'local-map keymap) | 357 | (overlay-put overlay 'local-map keymap) |
| 356 | (overlay-put overlay 'face face) | 358 | (overlay-put overlay 'face face) |
| 359 | (overlay-put overlay 'follow-link follow-link) | ||
| 357 | (overlay-put overlay 'help-echo help-echo))) | 360 | (overlay-put overlay 'help-echo help-echo))) |
| 358 | (widget-specify-secret widget)) | 361 | (widget-specify-secret widget)) |
| 359 | 362 | ||
| @@ -378,6 +381,7 @@ new value.") | |||
| 378 | (defun widget-specify-button (widget from to) | 381 | (defun widget-specify-button (widget from to) |
| 379 | "Specify button for WIDGET between FROM and TO." | 382 | "Specify button for WIDGET between FROM and TO." |
| 380 | (let ((overlay (make-overlay from to nil t nil)) | 383 | (let ((overlay (make-overlay from to nil t nil)) |
| 384 | (follow-link (widget-get widget :follow-link)) | ||
| 381 | (help-echo (widget-get widget :help-echo))) | 385 | (help-echo (widget-get widget :help-echo))) |
| 382 | (widget-put widget :button-overlay overlay) | 386 | (widget-put widget :button-overlay overlay) |
| 383 | (if (functionp help-echo) | 387 | (if (functionp help-echo) |
| @@ -389,6 +393,7 @@ new value.") | |||
| 389 | (unless (widget-get widget :suppress-face) | 393 | (unless (widget-get widget :suppress-face) |
| 390 | (overlay-put overlay 'face (widget-apply widget :button-face-get))) | 394 | (overlay-put overlay 'face (widget-apply widget :button-face-get))) |
| 391 | (overlay-put overlay 'pointer 'hand) | 395 | (overlay-put overlay 'pointer 'hand) |
| 396 | (overlay-put overlay 'follow-link follow-link) | ||
| 392 | (overlay-put overlay 'help-echo help-echo))) | 397 | (overlay-put overlay 'help-echo help-echo))) |
| 393 | 398 | ||
| 394 | (defun widget-mouse-help (window overlay point) | 399 | (defun widget-mouse-help (window overlay point) |
| @@ -1705,6 +1710,7 @@ If END is omitted, it defaults to the length of LIST." | |||
| 1705 | "An embedded link." | 1710 | "An embedded link." |
| 1706 | :button-prefix 'widget-link-prefix | 1711 | :button-prefix 'widget-link-prefix |
| 1707 | :button-suffix 'widget-link-suffix | 1712 | :button-suffix 'widget-link-suffix |
| 1713 | :follow-link "\C-m" | ||
| 1708 | :help-echo "Follow the link." | 1714 | :help-echo "Follow the link." |
| 1709 | :format "%[%t%]") | 1715 | :format "%[%t%]") |
| 1710 | 1716 | ||
diff --git a/lispref/ChangeLog b/lispref/ChangeLog index 6944d2af6c5..247309624de 100644 --- a/lispref/ChangeLog +++ b/lispref/ChangeLog | |||
| @@ -1,3 +1,7 @@ | |||
| 1 | 2004-12-21 Richard M. Stallman <rms@gnu.org> | ||
| 2 | |||
| 3 | * commands.texi (Event Input Misc): Add while-no-input. | ||
| 4 | |||
| 1 | 2004-12-11 Richard M. Stallman <rms@gnu.org> | 5 | 2004-12-11 Richard M. Stallman <rms@gnu.org> |
| 2 | 6 | ||
| 3 | * display.texi (Line Height): Rewrite text for clarity. | 7 | * display.texi (Line Height): Rewrite text for clarity. |
diff --git a/lispref/commands.texi b/lispref/commands.texi index 0144123ecb5..85e2953f102 100644 --- a/lispref/commands.texi +++ b/lispref/commands.texi | |||
| @@ -2388,6 +2388,18 @@ The alias @code{last-input-char} exists for compatibility with | |||
| 2388 | Emacs version 18. | 2388 | Emacs version 18. |
| 2389 | @end defvar | 2389 | @end defvar |
| 2390 | 2390 | ||
| 2391 | @defmac while-no-input body... | ||
| 2392 | This construct runs the @var{body} forms and returns the value | ||
| 2393 | of the last one---but only if no input arrives. If any input | ||
| 2394 | arrives during the execution of the @var{body} forms, it aborts | ||
| 2395 | them (working much like a quit), and the @code{while-no-input} | ||
| 2396 | form returns @code{nil}. | ||
| 2397 | |||
| 2398 | If a part of @var{body} binds @code{inhibit-quit} to non-@code{nil}, | ||
| 2399 | arrival of input during those parts won't cause an abort until | ||
| 2400 | the end of that part. | ||
| 2401 | @end defmac | ||
| 2402 | |||
| 2391 | @defun discard-input | 2403 | @defun discard-input |
| 2392 | @cindex flush input | 2404 | @cindex flush input |
| 2393 | @cindex discard input | 2405 | @cindex discard input |
diff --git a/man/ChangeLog b/man/ChangeLog index b251dc8e912..3b6507e6b78 100644 --- a/man/ChangeLog +++ b/man/ChangeLog | |||
| @@ -1,3 +1,40 @@ | |||
| 1 | 2004-12-20 Jay Belanger <belanger@truman.edu> | ||
| 2 | |||
| 3 | * calc.texi (Types Tutorial): Emphasized that you can't divide by | ||
| 4 | zero. | ||
| 5 | |||
| 6 | 2004-12-17 Luc Teirlinck <teirllm@auburn.edu> | ||
| 7 | |||
| 8 | * cc-mode.texi (Text Filling and Line Breaking): Put period after | ||
| 9 | @xref. | ||
| 10 | (Font Locking): Avoid @strong{Note:}. | ||
| 11 | |||
| 12 | 2004-12-17 Michael Albinus <michael.albinus@gmx.de> | ||
| 13 | |||
| 14 | Sync with Tramp 2.0.46. | ||
| 15 | |||
| 16 | * tramp.texi (bottom): Add arch-tag. It was lost, somehow. | ||
| 17 | |||
| 18 | 2004-12-16 Luc Teirlinck <teirllm@auburn.edu> | ||
| 19 | |||
| 20 | * url.texi: Correct typos. | ||
| 21 | (Retrieving URLs): @var{nil}->@code{nil}. | ||
| 22 | (HTTP language/coding, mailto): Replace "GNU Emacs Manual" with | ||
| 23 | the standard "The GNU Emacs Manual" in fifth argument of @xref's. | ||
| 24 | (Dealing with HTTP documents): @inforef->@xref. | ||
| 25 | |||
| 26 | 2004-12-15 Juri Linkov <juri@jurta.org> | ||
| 27 | |||
| 28 | * mark.texi (Transient Mark, Mark Ring): M-< and other | ||
| 29 | movement commands don't set mark in Transient Mark mode | ||
| 30 | if mark is active. | ||
| 31 | |||
| 32 | 2004-12-15 Jay Belanger <belanger@truman.edu> | ||
| 33 | |||
| 34 | * calc.texi: Consistently capitalized all mode names. | ||
| 35 | (Answers to Exercises): Mention that an answer can be a fraction | ||
| 36 | when in Fraction mode. | ||
| 37 | |||
| 1 | 2004-12-13 Jay Belanger <belanger@truman.edu> | 38 | 2004-12-13 Jay Belanger <belanger@truman.edu> |
| 2 | 39 | ||
| 3 | * calc.texi: Fix some TeX definitions. | 40 | * calc.texi: Fix some TeX definitions. |
diff --git a/man/calc.texi b/man/calc.texi index 16447e4e953..8260ed10350 100644 --- a/man/calc.texi +++ b/man/calc.texi | |||
| @@ -463,7 +463,7 @@ Algebraic manipulation features, including symbolic calculus. | |||
| 463 | Moving data to and from regular editing buffers. | 463 | Moving data to and from regular editing buffers. |
| 464 | 464 | ||
| 465 | @item | 465 | @item |
| 466 | ``Embedded mode'' for manipulating Calc formulas and data directly | 466 | Embedded mode for manipulating Calc formulas and data directly |
| 467 | inside any editing buffer. | 467 | inside any editing buffer. |
| 468 | 468 | ||
| 469 | @item | 469 | @item |
| @@ -766,7 +766,7 @@ To exit from Calc, press @kbd{q} or @kbd{M-# c} again. | |||
| 766 | @noindent | 766 | @noindent |
| 767 | Calc has several user interfaces that are specialized for | 767 | Calc has several user interfaces that are specialized for |
| 768 | different kinds of tasks. As well as Calc's standard interface, | 768 | different kinds of tasks. As well as Calc's standard interface, |
| 769 | there are Quick Mode, Keypad Mode, and Embedded Mode. | 769 | there are Quick mode, Keypad mode, and Embedded mode. |
| 770 | 770 | ||
| 771 | @menu | 771 | @menu |
| 772 | * Starting Calc:: | 772 | * Starting Calc:: |
| @@ -801,7 +801,7 @@ doesn't matter for @kbd{M-#}) that says which Calc interface you | |||
| 801 | want to use. | 801 | want to use. |
| 802 | 802 | ||
| 803 | To get Calc's standard interface, type @kbd{M-# c}. To get | 803 | To get Calc's standard interface, type @kbd{M-# c}. To get |
| 804 | Keypad Mode, type @kbd{M-# k}. Type @kbd{M-# ?} to get a brief | 804 | Keypad mode, type @kbd{M-# k}. Type @kbd{M-# ?} to get a brief |
| 805 | list of the available options, and type a second @kbd{?} to get | 805 | list of the available options, and type a second @kbd{?} to get |
| 806 | a complete list. | 806 | a complete list. |
| 807 | 807 | ||
| @@ -814,7 +814,7 @@ function key twice is just like hitting @kbd{M-# M-#}.) | |||
| 814 | 814 | ||
| 815 | If @kbd{M-#} doesn't work for you, you can always type explicit | 815 | If @kbd{M-#} doesn't work for you, you can always type explicit |
| 816 | commands like @kbd{M-x calc} (for the standard user interface) or | 816 | commands like @kbd{M-x calc} (for the standard user interface) or |
| 817 | @w{@kbd{M-x calc-keypad}} (for Keypad Mode). First type @kbd{M-x} | 817 | @w{@kbd{M-x calc-keypad}} (for Keypad mode). First type @kbd{M-x} |
| 818 | (that's Meta with the letter @kbd{x}), then, at the prompt, | 818 | (that's Meta with the letter @kbd{x}), then, at the prompt, |
| 819 | type the full command (like @kbd{calc-keypad}) and press Return. | 819 | type the full command (like @kbd{calc-keypad}) and press Return. |
| 820 | 820 | ||
| @@ -917,11 +917,11 @@ way to switch out of Calc momentarily to edit your file; type | |||
| 917 | @subsection Quick Mode (Overview) | 917 | @subsection Quick Mode (Overview) |
| 918 | 918 | ||
| 919 | @noindent | 919 | @noindent |
| 920 | @dfn{Quick Mode} is a quick way to use Calc when you don't need the | 920 | @dfn{Quick mode} is a quick way to use Calc when you don't need the |
| 921 | full complexity of the stack and trail. To use it, type @kbd{M-# q} | 921 | full complexity of the stack and trail. To use it, type @kbd{M-# q} |
| 922 | (@code{quick-calc}) in any regular editing buffer. | 922 | (@code{quick-calc}) in any regular editing buffer. |
| 923 | 923 | ||
| 924 | Quick Mode is very simple: It prompts you to type any formula in | 924 | Quick mode is very simple: It prompts you to type any formula in |
| 925 | standard algebraic notation (like @samp{4 - 2/3}) and then displays | 925 | standard algebraic notation (like @samp{4 - 2/3}) and then displays |
| 926 | the result at the bottom of the Emacs screen (@mathit{3.33333333333} | 926 | the result at the bottom of the Emacs screen (@mathit{3.33333333333} |
| 927 | in this case). You are then back in the same editing buffer you | 927 | in this case). You are then back in the same editing buffer you |
| @@ -930,7 +930,7 @@ again to do another quick calculation. The result of the calculation | |||
| 930 | will also be in the Emacs ``kill ring'' so that a @kbd{C-y} command | 930 | will also be in the Emacs ``kill ring'' so that a @kbd{C-y} command |
| 931 | at this point will yank the result into your editing buffer. | 931 | at this point will yank the result into your editing buffer. |
| 932 | 932 | ||
| 933 | Calc mode settings affect Quick Mode, too, though you will have to | 933 | Calc mode settings affect Quick mode, too, though you will have to |
| 934 | go into regular Calc (with @kbd{M-# c}) to change the mode settings. | 934 | go into regular Calc (with @kbd{M-# c}) to change the mode settings. |
| 935 | 935 | ||
| 936 | @c [fix-ref Quick Calculator mode] | 936 | @c [fix-ref Quick Calculator mode] |
| @@ -940,12 +940,12 @@ go into regular Calc (with @kbd{M-# c}) to change the mode settings. | |||
| 940 | @subsection Keypad Mode (Overview) | 940 | @subsection Keypad Mode (Overview) |
| 941 | 941 | ||
| 942 | @noindent | 942 | @noindent |
| 943 | @dfn{Keypad Mode} is a mouse-based interface to the Calculator. | 943 | @dfn{Keypad mode} is a mouse-based interface to the Calculator. |
| 944 | It is designed for use with terminals that support a mouse. If you | 944 | It is designed for use with terminals that support a mouse. If you |
| 945 | don't have a mouse, you will have to operate keypad mode with your | 945 | don't have a mouse, you will have to operate Keypad mode with your |
| 946 | arrow keys (which is probably more trouble than it's worth). | 946 | arrow keys (which is probably more trouble than it's worth). |
| 947 | 947 | ||
| 948 | Type @kbd{M-# k} to turn Keypad Mode on or off. Once again you | 948 | Type @kbd{M-# k} to turn Keypad mode on or off. Once again you |
| 949 | get two new windows, this time on the righthand side of the screen | 949 | get two new windows, this time on the righthand side of the screen |
| 950 | instead of at the bottom. The upper window is the familiar Calc | 950 | instead of at the bottom. The upper window is the familiar Calc |
| 951 | Stack; the lower window is a picture of a typical calculator keypad. | 951 | Stack; the lower window is a picture of a typical calculator keypad. |
| @@ -981,12 +981,12 @@ Stack; the lower window is a picture of a typical calculator keypad. | |||
| 981 | |-----+-----+-----+-----+-----+ | 981 | |-----+-----+-----+-----+-----+ |
| 982 | @end smallexample | 982 | @end smallexample |
| 983 | 983 | ||
| 984 | Keypad Mode is much easier for beginners to learn, because there | 984 | Keypad mode is much easier for beginners to learn, because there |
| 985 | is no need to memorize lots of obscure key sequences. But not all | 985 | is no need to memorize lots of obscure key sequences. But not all |
| 986 | commands in regular Calc are available on the Keypad. You can | 986 | commands in regular Calc are available on the Keypad. You can |
| 987 | always switch the cursor into the Calc stack window to use | 987 | always switch the cursor into the Calc stack window to use |
| 988 | standard Calc commands if you need. Serious Calc users, though, | 988 | standard Calc commands if you need. Serious Calc users, though, |
| 989 | often find they prefer the standard interface over Keypad Mode. | 989 | often find they prefer the standard interface over Keypad mode. |
| 990 | 990 | ||
| 991 | To operate the Calculator, just click on the ``buttons'' of the | 991 | To operate the Calculator, just click on the ``buttons'' of the |
| 992 | keypad using your left mouse button. To enter the two numbers | 992 | keypad using your left mouse button. To enter the two numbers |
| @@ -999,13 +999,13 @@ keypad change to show other sets of commands, such as advanced | |||
| 999 | math functions, vector operations, and operations on binary | 999 | math functions, vector operations, and operations on binary |
| 1000 | numbers. | 1000 | numbers. |
| 1001 | 1001 | ||
| 1002 | Because Keypad Mode doesn't use the regular keyboard, Calc leaves | 1002 | Because Keypad mode doesn't use the regular keyboard, Calc leaves |
| 1003 | the cursor in your original editing buffer. You can type in | 1003 | the cursor in your original editing buffer. You can type in |
| 1004 | this buffer in the usual way while also clicking on the Calculator | 1004 | this buffer in the usual way while also clicking on the Calculator |
| 1005 | keypad. One advantage of Keypad Mode is that you don't need an | 1005 | keypad. One advantage of Keypad mode is that you don't need an |
| 1006 | explicit command to switch between editing and calculating. | 1006 | explicit command to switch between editing and calculating. |
| 1007 | 1007 | ||
| 1008 | If you press @kbd{M-# b} first, you get a full-screen Keypad Mode | 1008 | If you press @kbd{M-# b} first, you get a full-screen Keypad mode |
| 1009 | (@code{full-calc-keypad}) with three windows: The keypad in the lower | 1009 | (@code{full-calc-keypad}) with three windows: The keypad in the lower |
| 1010 | left, the stack in the lower right, and the trail on top. | 1010 | left, the stack in the lower right, and the trail on top. |
| 1011 | 1011 | ||
| @@ -1043,7 +1043,7 @@ itself. | |||
| 1043 | @subsection Embedded Mode (Overview) | 1043 | @subsection Embedded Mode (Overview) |
| 1044 | 1044 | ||
| 1045 | @noindent | 1045 | @noindent |
| 1046 | @dfn{Embedded Mode} is a way to use Calc directly from inside an | 1046 | @dfn{Embedded mode} is a way to use Calc directly from inside an |
| 1047 | editing buffer. Suppose you have a formula written as part of a | 1047 | editing buffer. Suppose you have a formula written as part of a |
| 1048 | document like this: | 1048 | document like this: |
| 1049 | 1049 | ||
| @@ -1060,7 +1060,7 @@ is | |||
| 1060 | @noindent | 1060 | @noindent |
| 1061 | and you wish to have Calc compute and format the derivative for | 1061 | and you wish to have Calc compute and format the derivative for |
| 1062 | you and store this derivative in the buffer automatically. To | 1062 | you and store this derivative in the buffer automatically. To |
| 1063 | do this with Embedded Mode, first copy the formula down to where | 1063 | do this with Embedded mode, first copy the formula down to where |
| 1064 | you want the result to be: | 1064 | you want the result to be: |
| 1065 | 1065 | ||
| 1066 | @smallexample | 1066 | @smallexample |
| @@ -1099,7 +1099,7 @@ is | |||
| 1099 | @end smallexample | 1099 | @end smallexample |
| 1100 | 1100 | ||
| 1101 | To make this look nicer, you might want to press @kbd{d =} to center | 1101 | To make this look nicer, you might want to press @kbd{d =} to center |
| 1102 | the formula, and even @kbd{d B} to use ``big'' display mode. | 1102 | the formula, and even @kbd{d B} to use Big display mode. |
| 1103 | 1103 | ||
| 1104 | @smallexample | 1104 | @smallexample |
| 1105 | @group | 1105 | @group |
| @@ -1139,7 +1139,7 @@ righthand label: Type @kbd{d @} (1) @key{RET}}. | |||
| 1139 | @end group | 1139 | @end group |
| 1140 | @end smallexample | 1140 | @end smallexample |
| 1141 | 1141 | ||
| 1142 | To leave Embedded Mode, type @kbd{M-# e} again. The mode line | 1142 | To leave Embedded mode, type @kbd{M-# e} again. The mode line |
| 1143 | and keyboard will revert to the way they were before. (If you have | 1143 | and keyboard will revert to the way they were before. (If you have |
| 1144 | actually been trying this as you read along, you'll want to press | 1144 | actually been trying this as you read along, you'll want to press |
| 1145 | @kbd{M-# 0} [with the digit zero] now to reset the modes you changed.) | 1145 | @kbd{M-# 0} [with the digit zero] now to reset the modes you changed.) |
| @@ -1154,7 +1154,7 @@ A slope of one-third corresponds to an angle of 1 degrees. | |||
| 1154 | @end smallexample | 1154 | @end smallexample |
| 1155 | 1155 | ||
| 1156 | Place the cursor on the @samp{1}, then type @kbd{M-# w} to enable | 1156 | Place the cursor on the @samp{1}, then type @kbd{M-# w} to enable |
| 1157 | Embedded Mode on that number. Now type @kbd{3 /} (to get one-third), | 1157 | Embedded mode on that number. Now type @kbd{3 /} (to get one-third), |
| 1158 | and @kbd{I T} (the Inverse Tangent converts a slope into an angle), | 1158 | and @kbd{I T} (the Inverse Tangent converts a slope into an angle), |
| 1159 | then @w{@kbd{M-# w}} again to exit Embedded mode. | 1159 | then @w{@kbd{M-# w}} again to exit Embedded mode. |
| 1160 | 1160 | ||
| @@ -1221,7 +1221,7 @@ move it out of that window. | |||
| 1221 | Control whether @kbd{M-# c} and @kbd{M-# k} use the full screen. | 1221 | Control whether @kbd{M-# c} and @kbd{M-# k} use the full screen. |
| 1222 | 1222 | ||
| 1223 | @item Q | 1223 | @item Q |
| 1224 | Use Quick Mode for a single short calculation. | 1224 | Use Quick mode for a single short calculation. |
| 1225 | 1225 | ||
| 1226 | @item K | 1226 | @item K |
| 1227 | Turn Calc Keypad mode on or off. | 1227 | Turn Calc Keypad mode on or off. |
| @@ -1270,7 +1270,7 @@ Yank a value from the Calculator into the current editing buffer. | |||
| 1270 | @end iftex | 1270 | @end iftex |
| 1271 | 1271 | ||
| 1272 | @noindent | 1272 | @noindent |
| 1273 | Commands for use with Embedded Mode: | 1273 | Commands for use with Embedded mode: |
| 1274 | 1274 | ||
| 1275 | @table @kbd | 1275 | @table @kbd |
| 1276 | @item A | 1276 | @item A |
| @@ -1478,9 +1478,9 @@ to skip on to the rest of this manual. | |||
| 1478 | 1478 | ||
| 1479 | @c [fix-ref Embedded Mode] | 1479 | @c [fix-ref Embedded Mode] |
| 1480 | This tutorial describes the standard user interface of Calc only. | 1480 | This tutorial describes the standard user interface of Calc only. |
| 1481 | The ``Quick Mode'' and ``Keypad Mode'' interfaces are fairly | 1481 | The Quick mode and Keypad mode interfaces are fairly |
| 1482 | self-explanatory. @xref{Embedded Mode}, for a description of | 1482 | self-explanatory. @xref{Embedded Mode}, for a description of |
| 1483 | the ``Embedded Mode'' interface. | 1483 | the Embedded mode interface. |
| 1484 | 1484 | ||
| 1485 | @ifinfo | 1485 | @ifinfo |
| 1486 | The easiest way to read this tutorial on-line is to have two windows on | 1486 | The easiest way to read this tutorial on-line is to have two windows on |
| @@ -1940,8 +1940,8 @@ entire stack.) | |||
| 1940 | 1940 | ||
| 1941 | @noindent | 1941 | @noindent |
| 1942 | If you are not used to RPN notation, you may prefer to operate the | 1942 | If you are not used to RPN notation, you may prefer to operate the |
| 1943 | Calculator in ``algebraic mode,'' which is closer to the way | 1943 | Calculator in Algebraic mode, which is closer to the way |
| 1944 | non-RPN calculators work. In algebraic mode, you enter formulas | 1944 | non-RPN calculators work. In Algebraic mode, you enter formulas |
| 1945 | in traditional @expr{2+3} notation. | 1945 | in traditional @expr{2+3} notation. |
| 1946 | 1946 | ||
| 1947 | You don't really need any special ``mode'' to enter algebraic formulas. | 1947 | You don't really need any special ``mode'' to enter algebraic formulas. |
| @@ -2005,15 +2005,15 @@ that @samp{^} is evaluated from right to left. Thus, @samp{2-3-4} is | |||
| 2005 | equivalent to @samp{(2-3)-4} or @mathit{-5}, whereas @samp{2^3^4} is equivalent | 2005 | equivalent to @samp{(2-3)-4} or @mathit{-5}, whereas @samp{2^3^4} is equivalent |
| 2006 | to @samp{2^(3^4)} (a very large integer; try it!). | 2006 | to @samp{2^(3^4)} (a very large integer; try it!). |
| 2007 | 2007 | ||
| 2008 | If you tire of typing the apostrophe all the time, there is an | 2008 | If you tire of typing the apostrophe all the time, there is |
| 2009 | ``algebraic mode'' you can select in which Calc automatically senses | 2009 | Algebraic mode, where Calc automatically senses |
| 2010 | when you are about to type an algebraic expression. To enter this | 2010 | when you are about to type an algebraic expression. To enter this |
| 2011 | mode, press the two letters @w{@kbd{m a}}. (An @samp{Alg} indicator | 2011 | mode, press the two letters @w{@kbd{m a}}. (An @samp{Alg} indicator |
| 2012 | should appear in the Calc window's mode line.) | 2012 | should appear in the Calc window's mode line.) |
| 2013 | 2013 | ||
| 2014 | Press @kbd{m a}, then @kbd{2+3+4} with no apostrophe, then @key{RET}. | 2014 | Press @kbd{m a}, then @kbd{2+3+4} with no apostrophe, then @key{RET}. |
| 2015 | 2015 | ||
| 2016 | In algebraic mode, when you press any key that would normally begin | 2016 | In Algebraic mode, when you press any key that would normally begin |
| 2017 | entering a number (such as a digit, a decimal point, or the @kbd{_} | 2017 | entering a number (such as a digit, a decimal point, or the @kbd{_} |
| 2018 | key), or if you press @kbd{(} or @kbd{[}, Calc automatically begins | 2018 | key), or if you press @kbd{(} or @kbd{[}, Calc automatically begins |
| 2019 | an algebraic entry. | 2019 | an algebraic entry. |
| @@ -2028,7 +2028,7 @@ Press the apostrophe, then type @kbd{sqrt(5*2) - 3}. The result should | |||
| 2028 | be @expr{0.16227766017}. | 2028 | be @expr{0.16227766017}. |
| 2029 | 2029 | ||
| 2030 | Note that if the formula begins with a function name, you need to use | 2030 | Note that if the formula begins with a function name, you need to use |
| 2031 | the apostrophe even if you are in algebraic mode. If you type @kbd{arcsin} | 2031 | the apostrophe even if you are in Algebraic mode. If you type @kbd{arcsin} |
| 2032 | out of the blue, the @kbd{a r} will be taken as an Algebraic Rewrite | 2032 | out of the blue, the @kbd{a r} will be taken as an Algebraic Rewrite |
| 2033 | command, and the @kbd{csin} will be taken as the name of the rewrite | 2033 | command, and the @kbd{csin} will be taken as the name of the rewrite |
| 2034 | rule to use! | 2034 | rule to use! |
| @@ -2037,7 +2037,7 @@ Some people prefer to enter complex numbers and vectors in algebraic | |||
| 2037 | form because they find RPN entry with incomplete objects to be too | 2037 | form because they find RPN entry with incomplete objects to be too |
| 2038 | distracting, even though they otherwise use Calc as an RPN calculator. | 2038 | distracting, even though they otherwise use Calc as an RPN calculator. |
| 2039 | 2039 | ||
| 2040 | Still in algebraic mode, type: | 2040 | Still in Algebraic mode, type: |
| 2041 | 2041 | ||
| 2042 | @smallexample | 2042 | @smallexample |
| 2043 | @group | 2043 | @group |
| @@ -2053,15 +2053,15 @@ Algebraic mode allows us to enter complex numbers without pressing | |||
| 2053 | an apostrophe first, but it also means we need to press @key{RET} | 2053 | an apostrophe first, but it also means we need to press @key{RET} |
| 2054 | after every entry, even for a simple number like @expr{1}. | 2054 | after every entry, even for a simple number like @expr{1}. |
| 2055 | 2055 | ||
| 2056 | (You can type @kbd{C-u m a} to enable a special ``incomplete algebraic | 2056 | (You can type @kbd{C-u m a} to enable a special Incomplete Algebraic |
| 2057 | mode'' in which the @kbd{(} and @kbd{[} keys use algebraic entry even | 2057 | mode in which the @kbd{(} and @kbd{[} keys use algebraic entry even |
| 2058 | though regular numeric keys still use RPN numeric entry. There is also | 2058 | though regular numeric keys still use RPN numeric entry. There is also |
| 2059 | a ``total algebraic mode,'' started by typing @kbd{m t}, in which all | 2059 | Total Algebraic mode, started by typing @kbd{m t}, in which all |
| 2060 | normal keys begin algebraic entry. You must then use the @key{META} key | 2060 | normal keys begin algebraic entry. You must then use the @key{META} key |
| 2061 | to type Calc commands: @kbd{M-m t} to get back out of total algebraic | 2061 | to type Calc commands: @kbd{M-m t} to get back out of Total Algebraic |
| 2062 | mode, @kbd{M-q} to quit, etc.) | 2062 | mode, @kbd{M-q} to quit, etc.) |
| 2063 | 2063 | ||
| 2064 | If you're still in algebraic mode, press @kbd{m a} again to turn it off. | 2064 | If you're still in Algebraic mode, press @kbd{m a} again to turn it off. |
| 2065 | 2065 | ||
| 2066 | Actual non-RPN calculators use a mixture of algebraic and RPN styles. | 2066 | Actual non-RPN calculators use a mixture of algebraic and RPN styles. |
| 2067 | In general, operators of two numbers (like @kbd{+} and @kbd{*}) | 2067 | In general, operators of two numbers (like @kbd{+} and @kbd{*}) |
| @@ -2376,7 +2376,7 @@ during entry of a number or algebraic formula. | |||
| 2376 | @noindent | 2376 | @noindent |
| 2377 | Calc has many types of @dfn{modes} that affect the way it interprets | 2377 | Calc has many types of @dfn{modes} that affect the way it interprets |
| 2378 | your commands or the way it displays data. We have already seen one | 2378 | your commands or the way it displays data. We have already seen one |
| 2379 | mode, namely algebraic mode. There are many others, too; we'll | 2379 | mode, namely Algebraic mode. There are many others, too; we'll |
| 2380 | try some of the most common ones here. | 2380 | try some of the most common ones here. |
| 2381 | 2381 | ||
| 2382 | Perhaps the most fundamental mode in Calc is the current @dfn{precision}. | 2382 | Perhaps the most fundamental mode in Calc is the current @dfn{precision}. |
| @@ -2795,7 +2795,7 @@ and vice-versa. | |||
| 2795 | @end group | 2795 | @end group |
| 2796 | @end smallexample | 2796 | @end smallexample |
| 2797 | 2797 | ||
| 2798 | Another interesting mode is @dfn{fraction mode}. Normally, | 2798 | Another interesting mode is @dfn{Fraction mode}. Normally, |
| 2799 | dividing two integers produces a floating-point result if the | 2799 | dividing two integers produces a floating-point result if the |
| 2800 | quotient can't be expressed as an exact integer. Fraction mode | 2800 | quotient can't be expressed as an exact integer. Fraction mode |
| 2801 | causes integer division to produce a fraction, i.e., a rational | 2801 | causes integer division to produce a fraction, i.e., a rational |
| @@ -2819,7 +2819,7 @@ You can enter a fraction at any time using @kbd{:} notation. | |||
| 2819 | (Calc uses @kbd{:} instead of @kbd{/} as the fraction separator | 2819 | (Calc uses @kbd{:} instead of @kbd{/} as the fraction separator |
| 2820 | because @kbd{/} is already used to divide the top two stack | 2820 | because @kbd{/} is already used to divide the top two stack |
| 2821 | elements.) Calculations involving fractions will always | 2821 | elements.) Calculations involving fractions will always |
| 2822 | produce exact fractional results; fraction mode only says | 2822 | produce exact fractional results; Fraction mode only says |
| 2823 | what to do when dividing two integers. | 2823 | what to do when dividing two integers. |
| 2824 | 2824 | ||
| 2825 | @cindex Fractions vs. floats | 2825 | @cindex Fractions vs. floats |
| @@ -2830,7 +2830,7 @@ why would you ever use floating-point numbers instead? | |||
| 2830 | 2830 | ||
| 2831 | Typing @kbd{m f} doesn't change any existing values in the stack. | 2831 | Typing @kbd{m f} doesn't change any existing values in the stack. |
| 2832 | In the above example, we had to Undo the division and do it over | 2832 | In the above example, we had to Undo the division and do it over |
| 2833 | again when we changed to fraction mode. But if you use the | 2833 | again when we changed to Fraction mode. But if you use the |
| 2834 | evaluates-to operator you can get commands like @kbd{m f} to | 2834 | evaluates-to operator you can get commands like @kbd{m f} to |
| 2835 | recompute for you. | 2835 | recompute for you. |
| 2836 | 2836 | ||
| @@ -2846,7 +2846,7 @@ recompute for you. | |||
| 2846 | @noindent | 2846 | @noindent |
| 2847 | In this example, the righthand side of the @samp{=>} operator | 2847 | In this example, the righthand side of the @samp{=>} operator |
| 2848 | on the stack is recomputed when we change the precision, then | 2848 | on the stack is recomputed when we change the precision, then |
| 2849 | again when we change to fraction mode. All @samp{=>} expressions | 2849 | again when we change to Fraction mode. All @samp{=>} expressions |
| 2850 | on the stack are recomputed every time you change any mode that | 2850 | on the stack are recomputed every time you change any mode that |
| 2851 | might affect their values. | 2851 | might affect their values. |
| 2852 | 2852 | ||
| @@ -4530,7 +4530,7 @@ with the symbol @code{nan} (for Not A Number). | |||
| 4530 | 4530 | ||
| 4531 | Dividing by zero is normally treated as an error, but you can get | 4531 | Dividing by zero is normally treated as an error, but you can get |
| 4532 | Calc to write an answer in terms of infinity by pressing @kbd{m i} | 4532 | Calc to write an answer in terms of infinity by pressing @kbd{m i} |
| 4533 | to turn on ``infinite mode.'' | 4533 | to turn on Infinite mode. |
| 4534 | 4534 | ||
| 4535 | @smallexample | 4535 | @smallexample |
| 4536 | @group | 4536 | @group |
| @@ -4757,10 +4757,11 @@ or 24 hours. | |||
| 4757 | @end smallexample | 4757 | @end smallexample |
| 4758 | 4758 | ||
| 4759 | @noindent | 4759 | @noindent |
| 4760 | In this last step, Calc has found a new number which, when multiplied | 4760 | In this last step, Calc has divided by 5 modulo 24; i.e., it has found a |
| 4761 | by 5 modulo 24, produces the original number, 21. If @var{m} is prime | 4761 | new number which, when multiplied by 5 modulo 24, produces the original |
| 4762 | it is always possible to find such a number. For non-prime @var{m} | 4762 | number, 21. If @var{m} is prime and the divisor is not a multiple of |
| 4763 | like 24, it is only sometimes possible. | 4763 | @var{m}, it is always possible to find such a number. For non-prime |
| 4764 | @var{m} like 24, it is only sometimes possible. | ||
| 4764 | 4765 | ||
| 4765 | @smallexample | 4766 | @smallexample |
| 4766 | @group | 4767 | @group |
| @@ -4960,7 +4961,7 @@ formulas. | |||
| 4960 | @subsection Basic Algebra | 4961 | @subsection Basic Algebra |
| 4961 | 4962 | ||
| 4962 | @noindent | 4963 | @noindent |
| 4963 | If you enter a formula in algebraic mode that refers to variables, | 4964 | If you enter a formula in Algebraic mode that refers to variables, |
| 4964 | the formula itself is pushed onto the stack. You can manipulate | 4965 | the formula itself is pushed onto the stack. You can manipulate |
| 4965 | formulas as regular data objects. | 4966 | formulas as regular data objects. |
| 4966 | 4967 | ||
| @@ -5181,7 +5182,7 @@ polynomial? (The answer will be unique to within a constant | |||
| 5181 | multiple; choose the solution where the leading coefficient is one.) | 5182 | multiple; choose the solution where the leading coefficient is one.) |
| 5182 | @xref{Algebra Answer 2, 2}. (@bullet{}) | 5183 | @xref{Algebra Answer 2, 2}. (@bullet{}) |
| 5183 | 5184 | ||
| 5184 | The @kbd{m s} command enables ``symbolic mode,'' in which formulas | 5185 | The @kbd{m s} command enables Symbolic mode, in which formulas |
| 5185 | like @samp{sqrt(5)} that can't be evaluated exactly are left in | 5186 | like @samp{sqrt(5)} that can't be evaluated exactly are left in |
| 5186 | symbolic form rather than giving a floating-point approximate answer. | 5187 | symbolic form rather than giving a floating-point approximate answer. |
| 5187 | Fraction mode (@kbd{m f}) is also useful when doing algebra. | 5188 | Fraction mode (@kbd{m f}) is also useful when doing algebra. |
| @@ -5196,7 +5197,7 @@ Fraction mode (@kbd{m f}) is also useful when doing algebra. | |||
| 5196 | @end group | 5197 | @end group |
| 5197 | @end smallexample | 5198 | @end smallexample |
| 5198 | 5199 | ||
| 5199 | One more mode that makes reading formulas easier is ``Big mode.'' | 5200 | One more mode that makes reading formulas easier is Big mode. |
| 5200 | 5201 | ||
| 5201 | @smallexample | 5202 | @smallexample |
| 5202 | @group | 5203 | @group |
| @@ -5344,7 +5345,7 @@ also have used plain @kbd{v x} as follows: @kbd{v x 10 @key{RET} 9 + .1 *}.) | |||
| 5344 | 5345 | ||
| 5345 | @noindent | 5346 | @noindent |
| 5346 | (If you got wildly different results, did you remember to switch | 5347 | (If you got wildly different results, did you remember to switch |
| 5347 | to radians mode?) | 5348 | to Radians mode?) |
| 5348 | 5349 | ||
| 5349 | Here we have divided the curve into ten segments of equal width; | 5350 | Here we have divided the curve into ten segments of equal width; |
| 5350 | approximating these segments as rectangular boxes (i.e., assuming | 5351 | approximating these segments as rectangular boxes (i.e., assuming |
| @@ -5600,7 +5601,7 @@ only once and stores the compiled form along with the variable. That's | |||
| 5600 | another good reason to store your rules in variables rather than | 5601 | another good reason to store your rules in variables rather than |
| 5601 | entering them on the fly. | 5602 | entering them on the fly. |
| 5602 | 5603 | ||
| 5603 | (@bullet{}) @strong{Exercise 1.} Type @kbd{m s} to get symbolic | 5604 | (@bullet{}) @strong{Exercise 1.} Type @kbd{m s} to get Symbolic |
| 5604 | mode, then enter the formula @samp{@w{(2 + sqrt(2))} / @w{(1 + sqrt(2))}}. | 5605 | mode, then enter the formula @samp{@w{(2 + sqrt(2))} / @w{(1 + sqrt(2))}}. |
| 5605 | Using a rewrite rule, simplify this formula by multiplying both | 5606 | Using a rewrite rule, simplify this formula by multiplying both |
| 5606 | sides by the conjugate @w{@samp{1 - sqrt(2)}}. The result will have | 5607 | sides by the conjugate @w{@samp{1 - sqrt(2)}}. The result will have |
| @@ -5859,11 +5860,11 @@ so that @expr{2 - 3 (x + y) + x y} is a sum of three terms.) | |||
| 5859 | @xref{Rewrites Answer 5, 5}. (@bullet{}) | 5860 | @xref{Rewrites Answer 5, 5}. (@bullet{}) |
| 5860 | 5861 | ||
| 5861 | (@bullet{}) @strong{Exercise 6.} Calc considers the form @expr{0^0} | 5862 | (@bullet{}) @strong{Exercise 6.} Calc considers the form @expr{0^0} |
| 5862 | to be ``indeterminate,'' and leaves it unevaluated (assuming infinite | 5863 | to be ``indeterminate,'' and leaves it unevaluated (assuming Infinite |
| 5863 | mode is not enabled). Some people prefer to define @expr{0^0 = 1}, | 5864 | mode is not enabled). Some people prefer to define @expr{0^0 = 1}, |
| 5864 | so that the identity @expr{x^0 = 1} can safely be used for all @expr{x}. | 5865 | so that the identity @expr{x^0 = 1} can safely be used for all @expr{x}. |
| 5865 | Find a way to make Calc follow this convention. What happens if you | 5866 | Find a way to make Calc follow this convention. What happens if you |
| 5866 | now type @kbd{m i} to turn on infinite mode? | 5867 | now type @kbd{m i} to turn on Infinite mode? |
| 5867 | @xref{Rewrites Answer 6, 6}. (@bullet{}) | 5868 | @xref{Rewrites Answer 6, 6}. (@bullet{}) |
| 5868 | 5869 | ||
| 5869 | (@bullet{}) @strong{Exercise 7.} A Taylor series for a function is an | 5870 | (@bullet{}) @strong{Exercise 7.} A Taylor series for a function is an |
| @@ -6838,7 +6839,7 @@ the result will be zero because Calc uses the general rule that ``zero | |||
| 6838 | times anything is zero.'' | 6839 | times anything is zero.'' |
| 6839 | 6840 | ||
| 6840 | @c [fix-ref Infinities] | 6841 | @c [fix-ref Infinities] |
| 6841 | The @kbd{m i} command enables an @dfn{infinite mode} in which @expr{1 / 0} | 6842 | The @kbd{m i} command enables an @dfn{Infinite mode} in which @expr{1 / 0} |
| 6842 | results in a special symbol that represents ``infinity.'' If you | 6843 | results in a special symbol that represents ``infinity.'' If you |
| 6843 | multiply infinity by zero, Calc uses another special new symbol to | 6844 | multiply infinity by zero, Calc uses another special new symbol to |
| 6844 | show that the answer is ``indeterminate.'' @xref{Infinities}, for | 6845 | show that the answer is ``indeterminate.'' @xref{Infinities}, for |
| @@ -7002,7 +7003,7 @@ The result, when converted to an integer, will be off by 106. | |||
| 7002 | 7003 | ||
| 7003 | Here are two solutions: Raise the precision enough that the | 7004 | Here are two solutions: Raise the precision enough that the |
| 7004 | floating-point round-off error is strictly to the right of the | 7005 | floating-point round-off error is strictly to the right of the |
| 7005 | decimal point. Or, convert to fraction mode so that @expr{123456789 / 2} | 7006 | decimal point. Or, convert to Fraction mode so that @expr{123456789 / 2} |
| 7006 | produces the exact fraction @expr{123456789:2}, which can be rounded | 7007 | produces the exact fraction @expr{123456789:2}, which can be rounded |
| 7007 | down by the @kbd{F} command without ever switching to floating-point | 7008 | down by the @kbd{F} command without ever switching to floating-point |
| 7008 | format. | 7009 | format. |
| @@ -7015,9 +7016,9 @@ format. | |||
| 7015 | does a floating-point calculation instead and produces @expr{1.5}. | 7016 | does a floating-point calculation instead and produces @expr{1.5}. |
| 7016 | 7017 | ||
| 7017 | Calc will find an exact result for a logarithm if the result is an integer | 7018 | Calc will find an exact result for a logarithm if the result is an integer |
| 7018 | or the reciprocal of an integer. But there is no efficient way to search | 7019 | or (when in Fraction mode) the reciprocal of an integer. But there is |
| 7019 | the space of all possible rational numbers for an exact answer, so Calc | 7020 | no efficient way to search the space of all possible rational numbers |
| 7020 | doesn't try. | 7021 | for an exact answer, so Calc doesn't try. |
| 7021 | 7022 | ||
| 7022 | @node Vector Answer 1, Vector Answer 2, Arithmetic Answer 2, Answers to Exercises | 7023 | @node Vector Answer 1, Vector Answer 2, Arithmetic Answer 2, Answers to Exercises |
| 7023 | @subsection Vector Tutorial Exercise 1 | 7024 | @subsection Vector Tutorial Exercise 1 |
| @@ -7089,7 +7090,7 @@ matrix as usual. | |||
| 7089 | @end group | 7090 | @end group |
| 7090 | @end smallexample | 7091 | @end smallexample |
| 7091 | 7092 | ||
| 7092 | This can be made more readable using @kbd{d B} to enable ``big'' display | 7093 | This can be made more readable using @kbd{d B} to enable Big display |
| 7093 | mode: | 7094 | mode: |
| 7094 | 7095 | ||
| 7095 | @smallexample | 7096 | @smallexample |
| @@ -7100,7 +7101,7 @@ mode: | |||
| 7100 | @end group | 7101 | @end group |
| 7101 | @end smallexample | 7102 | @end smallexample |
| 7102 | 7103 | ||
| 7103 | Type @kbd{d N} to return to ``normal'' display mode afterwards. | 7104 | Type @kbd{d N} to return to Normal display mode afterwards. |
| 7104 | 7105 | ||
| 7105 | @node Matrix Answer 3, List Answer 1, Matrix Answer 2, Answers to Exercises | 7106 | @node Matrix Answer 3, List Answer 1, Matrix Answer 2, Answers to Exercises |
| 7106 | @subsection Matrix Tutorial Exercise 3 | 7107 | @subsection Matrix Tutorial Exercise 3 |
| @@ -8247,7 +8248,7 @@ so it settles for the conservative answer @code{uinf}. | |||
| 8247 | 8248 | ||
| 8248 | @samp{ln(0) = -inf}. Here we have an infinite answer to a finite | 8249 | @samp{ln(0) = -inf}. Here we have an infinite answer to a finite |
| 8249 | input. As in the @expr{1 / 0} case, Calc will only use infinities | 8250 | input. As in the @expr{1 / 0} case, Calc will only use infinities |
| 8250 | here if you have turned on ``infinite'' mode. Otherwise, it will | 8251 | here if you have turned on Infinite mode. Otherwise, it will |
| 8251 | treat @samp{ln(0)} as an error. | 8252 | treat @samp{ln(0)} as an error. |
| 8252 | 8253 | ||
| 8253 | @node Types Answer 3, Types Answer 4, Types Answer 2, Answers to Exercises | 8254 | @node Types Answer 3, Types Answer 4, Types Answer 2, Answers to Exercises |
| @@ -8461,7 +8462,7 @@ Calc normally treats division by zero as an error, so that the formula | |||
| 8461 | @w{@samp{1 / [0 .. 10]}}, also (potentially) divides by zero because zero | 8462 | @w{@samp{1 / [0 .. 10]}}, also (potentially) divides by zero because zero |
| 8462 | is now a member of the interval. So Calc leaves this one unevaluated, too. | 8463 | is now a member of the interval. So Calc leaves this one unevaluated, too. |
| 8463 | 8464 | ||
| 8464 | If you turn on ``infinite'' mode by pressing @kbd{m i}, you will | 8465 | If you turn on Infinite mode by pressing @kbd{m i}, you will |
| 8465 | instead get the answer @samp{[0.1 .. inf]}, which includes infinity | 8466 | instead get the answer @samp{[0.1 .. inf]}, which includes infinity |
| 8466 | as a possible value. | 8467 | as a possible value. |
| 8467 | 8468 | ||
| @@ -9124,7 +9125,7 @@ But then: | |||
| 9124 | @end group | 9125 | @end group |
| 9125 | @end smallexample | 9126 | @end smallexample |
| 9126 | 9127 | ||
| 9127 | Perhaps more surprisingly, this rule still works with infinite mode | 9128 | Perhaps more surprisingly, this rule still works with Infinite mode |
| 9128 | turned on. Calc tries @code{EvalRules} before any built-in rules for | 9129 | turned on. Calc tries @code{EvalRules} before any built-in rules for |
| 9129 | a function. This allows you to override the default behavior of any | 9130 | a function. This allows you to override the default behavior of any |
| 9130 | Calc feature: Even though Calc now wants to evaluate @expr{0^0} to | 9131 | Calc feature: Even though Calc now wants to evaluate @expr{0^0} to |
| @@ -9889,10 +9890,10 @@ By default this creates a pair of small windows, @samp{*Calculator*} | |||
| 9889 | and @samp{*Calc Trail*}. The former displays the contents of the | 9890 | and @samp{*Calc Trail*}. The former displays the contents of the |
| 9890 | Calculator stack and is manipulated exclusively through Calc commands. | 9891 | Calculator stack and is manipulated exclusively through Calc commands. |
| 9891 | It is possible (though not usually necessary) to create several Calc | 9892 | It is possible (though not usually necessary) to create several Calc |
| 9892 | Mode buffers each of which has an independent stack, undo list, and | 9893 | mode buffers each of which has an independent stack, undo list, and |
| 9893 | mode settings. There is exactly one Calc Trail buffer; it records a | 9894 | mode settings. There is exactly one Calc Trail buffer; it records a |
| 9894 | list of the results of all calculations that have been done. The | 9895 | list of the results of all calculations that have been done. The |
| 9895 | Calc Trail buffer uses a variant of Calc Mode, so Calculator commands | 9896 | Calc Trail buffer uses a variant of Calc mode, so Calculator commands |
| 9896 | still work when the trail buffer's window is selected. It is possible | 9897 | still work when the trail buffer's window is selected. It is possible |
| 9897 | to turn the trail window off, but the @samp{*Calc Trail*} buffer itself | 9898 | to turn the trail window off, but the @samp{*Calc Trail*} buffer itself |
| 9898 | still exists and is updated silently. @xref{Trail Commands}. | 9899 | still exists and is updated silently. @xref{Trail Commands}. |
| @@ -9906,7 +9907,7 @@ still exists and is updated silently. @xref{Trail Commands}. | |||
| 9906 | In most installations, the @kbd{M-# c} key sequence is a more | 9907 | In most installations, the @kbd{M-# c} key sequence is a more |
| 9907 | convenient way to start the Calculator. Also, @kbd{M-# M-#} and | 9908 | convenient way to start the Calculator. Also, @kbd{M-# M-#} and |
| 9908 | @kbd{M-# #} are synonyms for @kbd{M-# c} unless you last used Calc | 9909 | @kbd{M-# #} are synonyms for @kbd{M-# c} unless you last used Calc |
| 9909 | in its ``keypad'' mode. | 9910 | in its Keypad mode. |
| 9910 | 9911 | ||
| 9911 | @kindex x | 9912 | @kindex x |
| 9912 | @kindex M-x | 9913 | @kindex M-x |
| @@ -9978,7 +9979,7 @@ the keys with the mouse to operate the calculator. @xref{Keypad Mode}. | |||
| 9978 | @pindex calc-quit | 9979 | @pindex calc-quit |
| 9979 | @cindex Quitting the Calculator | 9980 | @cindex Quitting the Calculator |
| 9980 | @cindex Exiting the Calculator | 9981 | @cindex Exiting the Calculator |
| 9981 | The @kbd{q} key (@code{calc-quit}) exits Calc Mode and closes the | 9982 | The @kbd{q} key (@code{calc-quit}) exits Calc mode and closes the |
| 9982 | Calculator's window(s). It does not delete the Calculator buffers. | 9983 | Calculator's window(s). It does not delete the Calculator buffers. |
| 9983 | If you type @kbd{M-x calc} again, the Calculator will reappear with the | 9984 | If you type @kbd{M-x calc} again, the Calculator will reappear with the |
| 9984 | contents of the stack intact. Typing @kbd{M-# c} or @kbd{M-# M-#} | 9985 | contents of the stack intact. Typing @kbd{M-# c} or @kbd{M-# M-#} |
| @@ -10278,7 +10279,7 @@ expressions in this way. You may want to use @key{DEL} every so often to | |||
| 10278 | clear previous results off the stack. | 10279 | clear previous results off the stack. |
| 10279 | 10280 | ||
| 10280 | You can press the apostrophe key during normal numeric entry to switch | 10281 | You can press the apostrophe key during normal numeric entry to switch |
| 10281 | the half-entered number into algebraic entry mode. One reason to do this | 10282 | the half-entered number into Algebraic entry mode. One reason to do this |
| 10282 | would be to use the full Emacs cursor motion and editing keys, which are | 10283 | would be to use the full Emacs cursor motion and editing keys, which are |
| 10283 | available during algebraic entry but not during numeric entry. | 10284 | available during algebraic entry but not during numeric entry. |
| 10284 | 10285 | ||
| @@ -10289,7 +10290,7 @@ you complete your half-finished entry in a separate buffer. | |||
| 10289 | 10290 | ||
| 10290 | @kindex m a | 10291 | @kindex m a |
| 10291 | @pindex calc-algebraic-mode | 10292 | @pindex calc-algebraic-mode |
| 10292 | @cindex Algebraic mode | 10293 | @cindex Algebraic Mode |
| 10293 | If you prefer algebraic entry, you can use the command @kbd{m a} | 10294 | If you prefer algebraic entry, you can use the command @kbd{m a} |
| 10294 | (@code{calc-algebraic-mode}) to set Algebraic mode. In this mode, | 10295 | (@code{calc-algebraic-mode}) to set Algebraic mode. In this mode, |
| 10295 | digits and other keys that would normally start numeric entry instead | 10296 | digits and other keys that would normally start numeric entry instead |
| @@ -10300,7 +10301,7 @@ but you will have to press @key{RET} to terminate every number: | |||
| 10300 | @kbd{2 @key{RET} 3 @key{RET} * 4 @key{RET} +} would accomplish the same | 10301 | @kbd{2 @key{RET} 3 @key{RET} * 4 @key{RET} +} would accomplish the same |
| 10301 | thing as @kbd{2*3+4 @key{RET}}. | 10302 | thing as @kbd{2*3+4 @key{RET}}. |
| 10302 | 10303 | ||
| 10303 | @cindex Incomplete algebraic mode | 10304 | @cindex Incomplete Algebraic Mode |
| 10304 | If you give a numeric prefix argument like @kbd{C-u} to the @kbd{m a} | 10305 | If you give a numeric prefix argument like @kbd{C-u} to the @kbd{m a} |
| 10305 | command, it enables Incomplete Algebraic mode; this is like regular | 10306 | command, it enables Incomplete Algebraic mode; this is like regular |
| 10306 | Algebraic mode except that it applies to the @kbd{(} and @kbd{[} keys | 10307 | Algebraic mode except that it applies to the @kbd{(} and @kbd{[} keys |
| @@ -10308,15 +10309,15 @@ only. Numeric keys still begin a numeric entry in this mode. | |||
| 10308 | 10309 | ||
| 10309 | @kindex m t | 10310 | @kindex m t |
| 10310 | @pindex calc-total-algebraic-mode | 10311 | @pindex calc-total-algebraic-mode |
| 10311 | @cindex Total algebraic mode | 10312 | @cindex Total Algebraic Mode |
| 10312 | The @kbd{m t} (@code{calc-total-algebraic-mode}) gives you an even | 10313 | The @kbd{m t} (@code{calc-total-algebraic-mode}) gives you an even |
| 10313 | stronger algebraic-entry mode, in which @emph{all} regular letter and | 10314 | stronger algebraic-entry mode, in which @emph{all} regular letter and |
| 10314 | punctuation keys begin algebraic entry. Use this if you prefer typing | 10315 | punctuation keys begin algebraic entry. Use this if you prefer typing |
| 10315 | @w{@kbd{sqrt( )}} instead of @kbd{Q}, @w{@kbd{factor( )}} instead of | 10316 | @w{@kbd{sqrt( )}} instead of @kbd{Q}, @w{@kbd{factor( )}} instead of |
| 10316 | @kbd{a f}, and so on. To type regular Calc commands when you are in | 10317 | @kbd{a f}, and so on. To type regular Calc commands when you are in |
| 10317 | ``total'' algebraic mode, hold down the @key{META} key. Thus @kbd{M-q} | 10318 | Total Algebraic mode, hold down the @key{META} key. Thus @kbd{M-q} |
| 10318 | is the command to quit Calc, @kbd{M-p} sets the precision, and | 10319 | is the command to quit Calc, @kbd{M-p} sets the precision, and |
| 10319 | @kbd{M-m t} (or @kbd{M-m M-t}, if you prefer) turns total algebraic | 10320 | @kbd{M-m t} (or @kbd{M-m M-t}, if you prefer) turns Total Algebraic |
| 10320 | mode back off again. Meta keys also terminate algebraic entry, so | 10321 | mode back off again. Meta keys also terminate algebraic entry, so |
| 10321 | that @kbd{2+3 M-S} is equivalent to @kbd{2+3 @key{RET} M-S}. The symbol | 10322 | that @kbd{2+3 M-S} is equivalent to @kbd{2+3 @key{RET} M-S}. The symbol |
| 10322 | @samp{Alg*} will appear in the mode line whenever you are in this mode. | 10323 | @samp{Alg*} will appear in the mode line whenever you are in this mode. |
| @@ -10577,7 +10578,7 @@ that you must always press @kbd{w} yourself to see the messages). | |||
| 10577 | 10578 | ||
| 10578 | @noindent | 10579 | @noindent |
| 10579 | @pindex another-calc | 10580 | @pindex another-calc |
| 10580 | It is possible to have any number of Calc Mode buffers at once. | 10581 | It is possible to have any number of Calc mode buffers at once. |
| 10581 | Usually this is done by executing @kbd{M-x another-calc}, which | 10582 | Usually this is done by executing @kbd{M-x another-calc}, which |
| 10582 | is similar to @kbd{M-# c} except that if a @samp{*Calculator*} | 10583 | is similar to @kbd{M-# c} except that if a @samp{*Calculator*} |
| 10583 | buffer already exists, a new, independent one with a name of the | 10584 | buffer already exists, a new, independent one with a name of the |
| @@ -10792,7 +10793,7 @@ The Calculator stores integers to arbitrary precision. Addition, | |||
| 10792 | subtraction, and multiplication of integers always yields an exact | 10793 | subtraction, and multiplication of integers always yields an exact |
| 10793 | integer result. (If the result of a division or exponentiation of | 10794 | integer result. (If the result of a division or exponentiation of |
| 10794 | integers is not an integer, it is expressed in fractional or | 10795 | integers is not an integer, it is expressed in fractional or |
| 10795 | floating-point form according to the current Fraction Mode. | 10796 | floating-point form according to the current Fraction mode. |
| 10796 | @xref{Fraction Mode}.) | 10797 | @xref{Fraction Mode}.) |
| 10797 | 10798 | ||
| 10798 | A decimal integer is represented as an optional sign followed by a | 10799 | A decimal integer is represented as an optional sign followed by a |
| @@ -10818,7 +10819,7 @@ A @dfn{fraction} is a ratio of two integers. Fractions are traditionally | |||
| 10818 | written ``2/3'' but Calc uses the notation @samp{2:3}. (The @kbd{/} key | 10819 | written ``2/3'' but Calc uses the notation @samp{2:3}. (The @kbd{/} key |
| 10819 | performs RPN division; the following two sequences push the number | 10820 | performs RPN division; the following two sequences push the number |
| 10820 | @samp{2:3} on the stack: @kbd{2 :@: 3 @key{RET}}, or @kbd{2 @key{RET} 3 /} | 10821 | @samp{2:3} on the stack: @kbd{2 :@: 3 @key{RET}}, or @kbd{2 @key{RET} 3 /} |
| 10821 | assuming Fraction Mode has been enabled.) | 10822 | assuming Fraction mode has been enabled.) |
| 10822 | When the Calculator produces a fractional result it always reduces it to | 10823 | When the Calculator produces a fractional result it always reduces it to |
| 10823 | simplest form, which may in fact be an integer. | 10824 | simplest form, which may in fact be an integer. |
| 10824 | 10825 | ||
| @@ -10932,7 +10933,7 @@ Complex numbers are entered in stages using incomplete objects. | |||
| 10932 | Operations on rectangular complex numbers yield rectangular complex | 10933 | Operations on rectangular complex numbers yield rectangular complex |
| 10933 | results, and similarly for polar complex numbers. Where the two types | 10934 | results, and similarly for polar complex numbers. Where the two types |
| 10934 | are mixed, or where new complex numbers arise (as for the square root of | 10935 | are mixed, or where new complex numbers arise (as for the square root of |
| 10935 | a negative real), the current @dfn{Polar Mode} is used to determine the | 10936 | a negative real), the current @dfn{Polar mode} is used to determine the |
| 10936 | type. @xref{Polar Mode}. | 10937 | type. @xref{Polar Mode}. |
| 10937 | 10938 | ||
| 10938 | A complex result in which the imaginary part is zero (or the phase angle | 10939 | A complex result in which the imaginary part is zero (or the phase angle |
| @@ -11020,7 +11021,7 @@ infinity, it's just that @emph{which} number it stands for | |||
| 11020 | cannot be determined.) In Calc's notation, @samp{0 * inf = nan} | 11021 | cannot be determined.) In Calc's notation, @samp{0 * inf = nan} |
| 11021 | and @samp{inf / inf = nan}. A few other common indeterminate | 11022 | and @samp{inf / inf = nan}. A few other common indeterminate |
| 11022 | expressions are @samp{inf - inf} and @samp{inf ^ 0}. Also, | 11023 | expressions are @samp{inf - inf} and @samp{inf ^ 0}. Also, |
| 11023 | @samp{0 / 0 = nan} if you have turned on ``infinite mode'' | 11024 | @samp{0 / 0 = nan} if you have turned on Infinite mode |
| 11024 | (as described above). | 11025 | (as described above). |
| 11025 | 11026 | ||
| 11026 | Infinities are especially useful as parts of @dfn{intervals}. | 11027 | Infinities are especially useful as parts of @dfn{intervals}. |
| @@ -11586,10 +11587,10 @@ rather than @samp{1 ..@: 0.1e2}. Add spaces or zeros if you want to | |||
| 11586 | get the other interpretation. If you omit the lower or upper limit, | 11587 | get the other interpretation. If you omit the lower or upper limit, |
| 11587 | a default of @samp{-inf} or @samp{inf} (respectively) is furnished. | 11588 | a default of @samp{-inf} or @samp{inf} (respectively) is furnished. |
| 11588 | 11589 | ||
| 11589 | ``Infinite mode'' also affects operations on intervals | 11590 | Infinite mode also affects operations on intervals |
| 11590 | (@pxref{Infinities}). Calc will always introduce an open infinity, | 11591 | (@pxref{Infinities}). Calc will always introduce an open infinity, |
| 11591 | as in @samp{1 / (0 .. 2] = [0.5 .. inf)}. But closed infinities, | 11592 | as in @samp{1 / (0 .. 2] = [0.5 .. inf)}. But closed infinities, |
| 11592 | @w{@samp{1 / [0 .. 2] = [0.5 .. inf]}}, arise only in infinite mode; | 11593 | @w{@samp{1 / [0 .. 2] = [0.5 .. inf]}}, arise only in Infinite mode; |
| 11593 | otherwise they are left unevaluated. Note that the ``direction'' of | 11594 | otherwise they are left unevaluated. Note that the ``direction'' of |
| 11594 | a zero is not an issue in this case since the zero is always assumed | 11595 | a zero is not an issue in this case since the zero is always assumed |
| 11595 | to be continuous with the rest of the interval. For intervals that | 11596 | to be continuous with the rest of the interval. For intervals that |
| @@ -11904,7 +11905,7 @@ Commands that interpret (``parse'') text as algebraic formulas include | |||
| 11904 | algebraic entry (@kbd{'}), editing commands like @kbd{`} which parse | 11905 | algebraic entry (@kbd{'}), editing commands like @kbd{`} which parse |
| 11905 | the contents of the editing buffer when you finish, the @kbd{M-# g} | 11906 | the contents of the editing buffer when you finish, the @kbd{M-# g} |
| 11906 | and @w{@kbd{M-# r}} commands, the @kbd{C-y} command, the X window system | 11907 | and @w{@kbd{M-# r}} commands, the @kbd{C-y} command, the X window system |
| 11907 | ``paste'' mouse operation, and Embedded Mode. All of these operations | 11908 | ``paste'' mouse operation, and Embedded mode. All of these operations |
| 11908 | use the same rules for parsing formulas; in particular, language modes | 11909 | use the same rules for parsing formulas; in particular, language modes |
| 11909 | (@pxref{Language Modes}) affect them all in the same way. | 11910 | (@pxref{Language Modes}) affect them all in the same way. |
| 11910 | 11911 | ||
| @@ -12313,7 +12314,7 @@ Otherwise, the new mode information is appended to the end of the file. | |||
| 12313 | @pindex calc-mode-record-mode | 12314 | @pindex calc-mode-record-mode |
| 12314 | The @kbd{m R} (@code{calc-mode-record-mode}) command tells Calc to | 12315 | The @kbd{m R} (@code{calc-mode-record-mode}) command tells Calc to |
| 12315 | record the new mode settings (as if by pressing @kbd{m m}) every | 12316 | record the new mode settings (as if by pressing @kbd{m m}) every |
| 12316 | time a mode setting changes. If Embedded Mode is enabled, other | 12317 | time a mode setting changes. If Embedded mode is enabled, other |
| 12317 | options are available; @pxref{Mode Settings in Embedded Mode}. | 12318 | options are available; @pxref{Mode Settings in Embedded Mode}. |
| 12318 | 12319 | ||
| 12319 | @kindex m F | 12320 | @kindex m F |
| @@ -12494,7 +12495,7 @@ Functions that compute angles produce a number in radians, a number in | |||
| 12494 | degrees, or an HMS form depending on the current angular mode. If the | 12495 | degrees, or an HMS form depending on the current angular mode. If the |
| 12495 | result is a complex number and the current mode is HMS, the number is | 12496 | result is a complex number and the current mode is HMS, the number is |
| 12496 | instead expressed in degrees. (Complex-number calculations would | 12497 | instead expressed in degrees. (Complex-number calculations would |
| 12497 | normally be done in radians mode, though. Complex numbers are converted | 12498 | normally be done in Radians mode, though. Complex numbers are converted |
| 12498 | to degrees by calculating the complex result in radians and then | 12499 | to degrees by calculating the complex result in radians and then |
| 12499 | multiplying by 180 over @cpi{}.) | 12500 | multiplying by 180 over @cpi{}.) |
| 12500 | 12501 | ||
| @@ -12507,7 +12508,7 @@ multiplying by 180 over @cpi{}.) | |||
| 12507 | The @kbd{m r} (@code{calc-radians-mode}), @kbd{m d} (@code{calc-degrees-mode}), | 12508 | The @kbd{m r} (@code{calc-radians-mode}), @kbd{m d} (@code{calc-degrees-mode}), |
| 12508 | and @kbd{m h} (@code{calc-hms-mode}) commands control the angular mode. | 12509 | and @kbd{m h} (@code{calc-hms-mode}) commands control the angular mode. |
| 12509 | The current angular mode is displayed on the Emacs mode line. | 12510 | The current angular mode is displayed on the Emacs mode line. |
| 12510 | The default angular mode is degrees. | 12511 | The default angular mode is Degrees. |
| 12511 | 12512 | ||
| 12512 | @node Polar Mode, Fraction Mode, Angular Modes, Calculation Modes | 12513 | @node Polar Mode, Fraction Mode, Angular Modes, Calculation Modes |
| 12513 | @subsection Polar Mode | 12514 | @subsection Polar Mode |
| @@ -12523,7 +12524,7 @@ number, or by entering @kbd{( 2 @key{SPC} 3 )}. | |||
| 12523 | @kindex m p | 12524 | @kindex m p |
| 12524 | @pindex calc-polar-mode | 12525 | @pindex calc-polar-mode |
| 12525 | The @kbd{m p} (@code{calc-polar-mode}) command toggles complex-number | 12526 | The @kbd{m p} (@code{calc-polar-mode}) command toggles complex-number |
| 12526 | preference between rectangular and polar forms. In polar mode, all | 12527 | preference between rectangular and polar forms. In Polar mode, all |
| 12527 | of the above example situations would produce polar complex numbers. | 12528 | of the above example situations would produce polar complex numbers. |
| 12528 | 12529 | ||
| 12529 | @node Fraction Mode, Infinite Mode, Polar Mode, Calculation Modes | 12530 | @node Fraction Mode, Infinite Mode, Polar Mode, Calculation Modes |
| @@ -12543,8 +12544,8 @@ even though @kbd{6 @key{RET} 4 /} produces @expr{1.5}. | |||
| 12543 | To set the Calculator to produce fractional results for normal integer | 12544 | To set the Calculator to produce fractional results for normal integer |
| 12544 | divisions, use the @kbd{m f} (@code{calc-frac-mode}) command. | 12545 | divisions, use the @kbd{m f} (@code{calc-frac-mode}) command. |
| 12545 | For example, @expr{8/4} produces @expr{2} in either mode, | 12546 | For example, @expr{8/4} produces @expr{2} in either mode, |
| 12546 | but @expr{6/4} produces @expr{3:2} in Fraction Mode, @expr{1.5} in | 12547 | but @expr{6/4} produces @expr{3:2} in Fraction mode, @expr{1.5} in |
| 12547 | Float Mode. | 12548 | Float mode. |
| 12548 | 12549 | ||
| 12549 | At any time you can use @kbd{c f} (@code{calc-float}) to convert a | 12550 | At any time you can use @kbd{c f} (@code{calc-float}) to convert a |
| 12550 | fraction to a float, or @kbd{c F} (@code{calc-fraction}) to convert a | 12551 | fraction to a float, or @kbd{c F} (@code{calc-fraction}) to convert a |
| @@ -12567,25 +12568,25 @@ on and off. When the mode is off, infinities do not arise except | |||
| 12567 | in calculations that already had infinities as inputs. (One exception | 12568 | in calculations that already had infinities as inputs. (One exception |
| 12568 | is that infinite open intervals like @samp{[0 .. inf)} can be | 12569 | is that infinite open intervals like @samp{[0 .. inf)} can be |
| 12569 | generated; however, intervals closed at infinity (@samp{[0 .. inf]}) | 12570 | generated; however, intervals closed at infinity (@samp{[0 .. inf]}) |
| 12570 | will not be generated when infinite mode is off.) | 12571 | will not be generated when Infinite mode is off.) |
| 12571 | 12572 | ||
| 12572 | With infinite mode turned on, @samp{1 / 0} will generate @code{uinf}, | 12573 | With Infinite mode turned on, @samp{1 / 0} will generate @code{uinf}, |
| 12573 | an undirected infinity. @xref{Infinities}, for a discussion of the | 12574 | an undirected infinity. @xref{Infinities}, for a discussion of the |
| 12574 | difference between @code{inf} and @code{uinf}. Also, @expr{0 / 0} | 12575 | difference between @code{inf} and @code{uinf}. Also, @expr{0 / 0} |
| 12575 | evaluates to @code{nan}, the ``indeterminate'' symbol. Various other | 12576 | evaluates to @code{nan}, the ``indeterminate'' symbol. Various other |
| 12576 | functions can also return infinities in this mode; for example, | 12577 | functions can also return infinities in this mode; for example, |
| 12577 | @samp{ln(0) = -inf}, and @samp{gamma(-7) = uinf}. Once again, | 12578 | @samp{ln(0) = -inf}, and @samp{gamma(-7) = uinf}. Once again, |
| 12578 | note that @samp{exp(inf) = inf} regardless of infinite mode because | 12579 | note that @samp{exp(inf) = inf} regardless of Infinite mode because |
| 12579 | this calculation has infinity as an input. | 12580 | this calculation has infinity as an input. |
| 12580 | 12581 | ||
| 12581 | @cindex Positive infinite mode | 12582 | @cindex Positive Infinite mode |
| 12582 | The @kbd{m i} command with a numeric prefix argument of zero, | 12583 | The @kbd{m i} command with a numeric prefix argument of zero, |
| 12583 | i.e., @kbd{C-u 0 m i}, turns on a ``positive infinite mode'' in | 12584 | i.e., @kbd{C-u 0 m i}, turns on a Positive Infinite mode in |
| 12584 | which zero is treated as positive instead of being directionless. | 12585 | which zero is treated as positive instead of being directionless. |
| 12585 | Thus, @samp{1 / 0 = inf} and @samp{-1 / 0 = -inf} in this mode. | 12586 | Thus, @samp{1 / 0 = inf} and @samp{-1 / 0 = -inf} in this mode. |
| 12586 | Note that zero never actually has a sign in Calc; there are no | 12587 | Note that zero never actually has a sign in Calc; there are no |
| 12587 | separate representations for @mathit{+0} and @mathit{-0}. Positive | 12588 | separate representations for @mathit{+0} and @mathit{-0}. Positive |
| 12588 | infinite mode merely changes the interpretation given to the | 12589 | Infinite mode merely changes the interpretation given to the |
| 12589 | single symbol, @samp{0}. One consequence of this is that, while | 12590 | single symbol, @samp{0}. One consequence of this is that, while |
| 12590 | you might expect @samp{1 / -0 = -inf}, actually @samp{1 / -0} | 12591 | you might expect @samp{1 / -0 = -inf}, actually @samp{1 / -0} |
| 12591 | is equivalent to @samp{1 / 0}, which is equal to positive @code{inf}. | 12592 | is equivalent to @samp{1 / 0}, which is equal to positive @code{inf}. |
| @@ -12604,7 +12605,7 @@ number or a symbolic expression if the argument is an expression: | |||
| 12604 | 12605 | ||
| 12605 | @kindex m s | 12606 | @kindex m s |
| 12606 | @pindex calc-symbolic-mode | 12607 | @pindex calc-symbolic-mode |
| 12607 | In @dfn{symbolic mode}, controlled by the @kbd{m s} (@code{calc-symbolic-mode}) | 12608 | In @dfn{Symbolic mode}, controlled by the @kbd{m s} (@code{calc-symbolic-mode}) |
| 12608 | command, functions which would produce inexact, irrational results are | 12609 | command, functions which would produce inexact, irrational results are |
| 12609 | left in symbolic form. Thus @kbd{16 Q} pushes 4, but @kbd{2 Q} pushes | 12610 | left in symbolic form. Thus @kbd{16 Q} pushes 4, but @kbd{2 Q} pushes |
| 12610 | @samp{sqrt(2)}. | 12611 | @samp{sqrt(2)}. |
| @@ -12631,12 +12632,12 @@ variables.) | |||
| 12631 | @cindex Scalar mode | 12632 | @cindex Scalar mode |
| 12632 | Calc sometimes makes assumptions during algebraic manipulation that | 12633 | Calc sometimes makes assumptions during algebraic manipulation that |
| 12633 | are awkward or incorrect when vectors and matrices are involved. | 12634 | are awkward or incorrect when vectors and matrices are involved. |
| 12634 | Calc has two modes, @dfn{matrix mode} and @dfn{scalar mode}, which | 12635 | Calc has two modes, @dfn{Matrix mode} and @dfn{Scalar mode}, which |
| 12635 | modify its behavior around vectors in useful ways. | 12636 | modify its behavior around vectors in useful ways. |
| 12636 | 12637 | ||
| 12637 | @kindex m v | 12638 | @kindex m v |
| 12638 | @pindex calc-matrix-mode | 12639 | @pindex calc-matrix-mode |
| 12639 | Press @kbd{m v} (@code{calc-matrix-mode}) once to enter matrix mode. | 12640 | Press @kbd{m v} (@code{calc-matrix-mode}) once to enter Matrix mode. |
| 12640 | In this mode, all objects are assumed to be matrices unless provably | 12641 | In this mode, all objects are assumed to be matrices unless provably |
| 12641 | otherwise. One major effect is that Calc will no longer consider | 12642 | otherwise. One major effect is that Calc will no longer consider |
| 12642 | multiplication to be commutative. (Recall that in matrix arithmetic, | 12643 | multiplication to be commutative. (Recall that in matrix arithmetic, |
| @@ -12655,18 +12656,18 @@ a true identity matrix of the appropriate size. On the other hand, | |||
| 12655 | if it is combined with a scalar (as in @samp{idn(1) + 2}), Calc | 12656 | if it is combined with a scalar (as in @samp{idn(1) + 2}), Calc |
| 12656 | will assume it really was a scalar after all and produce, e.g., 3. | 12657 | will assume it really was a scalar after all and produce, e.g., 3. |
| 12657 | 12658 | ||
| 12658 | Press @kbd{m v} a second time to get scalar mode. Here, objects are | 12659 | Press @kbd{m v} a second time to get Scalar mode. Here, objects are |
| 12659 | assumed @emph{not} to be vectors or matrices unless provably so. | 12660 | assumed @emph{not} to be vectors or matrices unless provably so. |
| 12660 | For example, normally adding a variable to a vector, as in | 12661 | For example, normally adding a variable to a vector, as in |
| 12661 | @samp{[x, y, z] + a}, will leave the sum in symbolic form because | 12662 | @samp{[x, y, z] + a}, will leave the sum in symbolic form because |
| 12662 | as far as Calc knows, @samp{a} could represent either a number or | 12663 | as far as Calc knows, @samp{a} could represent either a number or |
| 12663 | another 3-vector. In scalar mode, @samp{a} is assumed to be a | 12664 | another 3-vector. In Scalar mode, @samp{a} is assumed to be a |
| 12664 | non-vector, and the addition is evaluated to @samp{[x+a, y+a, z+a]}. | 12665 | non-vector, and the addition is evaluated to @samp{[x+a, y+a, z+a]}. |
| 12665 | 12666 | ||
| 12666 | Press @kbd{m v} a third time to return to the normal mode of operation. | 12667 | Press @kbd{m v} a third time to return to the normal mode of operation. |
| 12667 | 12668 | ||
| 12668 | If you press @kbd{m v} with a numeric prefix argument @var{n}, you | 12669 | If you press @kbd{m v} with a numeric prefix argument @var{n}, you |
| 12669 | get a special ``dimensioned matrix mode'' in which matrices of | 12670 | get a special ``dimensioned'' Matrix mode in which matrices of |
| 12670 | unknown size are assumed to be @var{n}x@var{n} square matrices. | 12671 | unknown size are assumed to be @var{n}x@var{n} square matrices. |
| 12671 | Then, the function call @samp{idn(1)} will expand into an actual | 12672 | Then, the function call @samp{idn(1)} will expand into an actual |
| 12672 | matrix rather than representing a ``generic'' matrix. | 12673 | matrix rather than representing a ``generic'' matrix. |
| @@ -12687,11 +12688,11 @@ for @samp{[x, y, z] + [1, 2, 3]}, but that's because you have broken | |||
| 12687 | your earlier promise to Calc that @samp{a} would be scalar. | 12688 | your earlier promise to Calc that @samp{a} would be scalar. |
| 12688 | 12689 | ||
| 12689 | Another way to mix scalars and matrices is to use selections | 12690 | Another way to mix scalars and matrices is to use selections |
| 12690 | (@pxref{Selecting Subformulas}). Use matrix mode when operating on | 12691 | (@pxref{Selecting Subformulas}). Use Matrix mode when operating on |
| 12691 | your formula normally; then, to apply scalar mode to a certain part | 12692 | your formula normally; then, to apply Scalar mode to a certain part |
| 12692 | of the formula without affecting the rest just select that part, | 12693 | of the formula without affecting the rest just select that part, |
| 12693 | change into scalar mode and press @kbd{=} to resimplify the part | 12694 | change into Scalar mode and press @kbd{=} to resimplify the part |
| 12694 | under this mode, then change back to matrix mode before deselecting. | 12695 | under this mode, then change back to Matrix mode before deselecting. |
| 12695 | 12696 | ||
| 12696 | @node Automatic Recomputation, Working Message, Matrix Mode, Calculation Modes | 12697 | @node Automatic Recomputation, Working Message, Matrix Mode, Calculation Modes |
| 12697 | @subsection Automatic Recomputation | 12698 | @subsection Automatic Recomputation |
| @@ -12707,7 +12708,7 @@ are changed. @xref{Evaluates-To Operator}. | |||
| 12707 | The @kbd{m C} (@code{calc-auto-recompute}) command turns this | 12708 | The @kbd{m C} (@code{calc-auto-recompute}) command turns this |
| 12708 | automatic recomputation on and off. If you turn it off, Calc will | 12709 | automatic recomputation on and off. If you turn it off, Calc will |
| 12709 | not update @samp{=>} operators on the stack (nor those in the | 12710 | not update @samp{=>} operators on the stack (nor those in the |
| 12710 | attached Embedded Mode buffer, if there is one). They will not | 12711 | attached Embedded mode buffer, if there is one). They will not |
| 12711 | be updated unless you explicitly do so by pressing @kbd{=} or until | 12712 | be updated unless you explicitly do so by pressing @kbd{=} or until |
| 12712 | you press @kbd{m C} to turn recomputation back on. (While automatic | 12713 | you press @kbd{m C} to turn recomputation back on. (While automatic |
| 12713 | recomputation is off, you can think of @kbd{m C m C} as a command | 12714 | recomputation is off, you can think of @kbd{m C m C} as a command |
| @@ -12828,7 +12829,7 @@ A common technique is to set the simplification mode down to the lowest | |||
| 12828 | amount of simplification you will allow to be applied automatically, then | 12829 | amount of simplification you will allow to be applied automatically, then |
| 12829 | use manual commands like @kbd{a s} and @kbd{c c} (@code{calc-clean}) to | 12830 | use manual commands like @kbd{a s} and @kbd{c c} (@code{calc-clean}) to |
| 12830 | perform higher types of simplifications on demand. @xref{Algebraic | 12831 | perform higher types of simplifications on demand. @xref{Algebraic |
| 12831 | Definitions}, for another sample use of no-simplification mode. | 12832 | Definitions}, for another sample use of No-Simplification mode. |
| 12832 | 12833 | ||
| 12833 | @node Declarations, Display Modes, Simplification Modes, Mode Settings | 12834 | @node Declarations, Display Modes, Simplification Modes, Mode Settings |
| 12834 | @section Declarations | 12835 | @section Declarations |
| @@ -13075,8 +13076,8 @@ and @code{y} are known to be vectors or matrices. (Calc currently | |||
| 13075 | never distinguishes between @code{vector} and @code{matrix} | 13076 | never distinguishes between @code{vector} and @code{matrix} |
| 13076 | declarations.) | 13077 | declarations.) |
| 13077 | 13078 | ||
| 13078 | @xref{Matrix Mode}, for a discussion of ``matrix mode'' and | 13079 | @xref{Matrix Mode}, for a discussion of Matrix mode and |
| 13079 | ``scalar mode,'' which are similar to declaring @samp{[All, matrix]} | 13080 | Scalar mode, which are similar to declaring @samp{[All, matrix]} |
| 13080 | or @samp{[All, scalar]} but much more convenient. | 13081 | or @samp{[All, scalar]} but much more convenient. |
| 13081 | 13082 | ||
| 13082 | One more type symbol that is recognized is used with the @kbd{H a d} | 13083 | One more type symbol that is recognized is used with the @kbd{H a d} |
| @@ -13228,8 +13229,8 @@ remains unevaluated. | |||
| 13228 | @tindex dscalar | 13229 | @tindex dscalar |
| 13229 | The @code{dscalar} function returns 1 if its argument is provably | 13230 | The @code{dscalar} function returns 1 if its argument is provably |
| 13230 | scalar, or 0 if its argument is provably non-scalar. It is left | 13231 | scalar, or 0 if its argument is provably non-scalar. It is left |
| 13231 | unevaluated if this cannot be determined. (If matrix mode or scalar | 13232 | unevaluated if this cannot be determined. (If Matrix mode or Scalar |
| 13232 | mode are in effect, this function returns 1 or 0, respectively, | 13233 | mode is in effect, this function returns 1 or 0, respectively, |
| 13233 | if it has no other information.) When Calc interprets a condition | 13234 | if it has no other information.) When Calc interprets a condition |
| 13234 | (say, in a rewrite rule) it considers an unevaluated formula to be | 13235 | (say, in a rewrite rule) it considers an unevaluated formula to be |
| 13235 | ``false.'' Thus, @samp{dscalar(a)} is ``true'' only if @code{a} is | 13236 | ``false.'' Thus, @samp{dscalar(a)} is ``true'' only if @code{a} is |
| @@ -13338,7 +13339,7 @@ entirety.) | |||
| 13338 | @cindex Digit grouping | 13339 | @cindex Digit grouping |
| 13339 | Long numbers can be hard to read if they have too many digits. For | 13340 | Long numbers can be hard to read if they have too many digits. For |
| 13340 | example, the factorial of 30 is 33 digits long! Press @kbd{d g} | 13341 | example, the factorial of 30 is 33 digits long! Press @kbd{d g} |
| 13341 | (@code{calc-group-digits}) to enable @dfn{grouping} mode, in which digits | 13342 | (@code{calc-group-digits}) to enable @dfn{Grouping} mode, in which digits |
| 13342 | are displayed in clumps of 3 or 4 (depending on the current radix) | 13343 | are displayed in clumps of 3 or 4 (depending on the current radix) |
| 13343 | separated by commas. | 13344 | separated by commas. |
| 13344 | 13345 | ||
| @@ -13884,7 +13885,7 @@ line at a time (or several lines with a prefix argument). | |||
| 13884 | Values on the stack are normally left-justified in the window. You can | 13885 | Values on the stack are normally left-justified in the window. You can |
| 13885 | control this arrangement by typing @kbd{d <} (@code{calc-left-justify}), | 13886 | control this arrangement by typing @kbd{d <} (@code{calc-left-justify}), |
| 13886 | @kbd{d >} (@code{calc-right-justify}), or @kbd{d =} | 13887 | @kbd{d >} (@code{calc-right-justify}), or @kbd{d =} |
| 13887 | (@code{calc-center-justify}). For example, in right-justification mode, | 13888 | (@code{calc-center-justify}). For example, in Right-Justification mode, |
| 13888 | stack entries are displayed flush-right against the right edge of the | 13889 | stack entries are displayed flush-right against the right edge of the |
| 13889 | window. | 13890 | window. |
| 13890 | 13891 | ||
| @@ -13905,20 +13906,20 @@ breaking lines are given below. Notice that the interaction between | |||
| 13905 | origin and line width is slightly different in each justification | 13906 | origin and line width is slightly different in each justification |
| 13906 | mode. | 13907 | mode. |
| 13907 | 13908 | ||
| 13908 | In left-justified mode, the line is indented by a number of spaces | 13909 | In Left-Justified mode, the line is indented by a number of spaces |
| 13909 | given by the origin (default zero). If the result is longer than the | 13910 | given by the origin (default zero). If the result is longer than the |
| 13910 | maximum line width, if given, or too wide to fit in the Calc window | 13911 | maximum line width, if given, or too wide to fit in the Calc window |
| 13911 | otherwise, then it is broken into lines which will fit; each broken | 13912 | otherwise, then it is broken into lines which will fit; each broken |
| 13912 | line is indented to the origin. | 13913 | line is indented to the origin. |
| 13913 | 13914 | ||
| 13914 | In right-justified mode, lines are shifted right so that the rightmost | 13915 | In Right-Justified mode, lines are shifted right so that the rightmost |
| 13915 | character is just before the origin, or just before the current | 13916 | character is just before the origin, or just before the current |
| 13916 | window width if no origin was specified. If the line is too long | 13917 | window width if no origin was specified. If the line is too long |
| 13917 | for this, then it is broken; the current line width is used, if | 13918 | for this, then it is broken; the current line width is used, if |
| 13918 | specified, or else the origin is used as a width if that is | 13919 | specified, or else the origin is used as a width if that is |
| 13919 | specified, or else the line is broken to fit in the window. | 13920 | specified, or else the line is broken to fit in the window. |
| 13920 | 13921 | ||
| 13921 | In centering mode, the origin is the column number of the center of | 13922 | In Centering mode, the origin is the column number of the center of |
| 13922 | each stack entry. If a line width is specified, lines will not be | 13923 | each stack entry. If a line width is specified, lines will not be |
| 13923 | allowed to go past that width; Calc will either indent less or | 13924 | allowed to go past that width; Calc will either indent less or |
| 13924 | break the lines if necessary. If no origin is specified, half the | 13925 | break the lines if necessary. If no origin is specified, half the |
| @@ -13953,13 +13954,13 @@ Give a blank string (with @kbd{d @{ @key{RET}}) to turn the label off. | |||
| 13953 | The @kbd{d @}} (@code{calc-right-label}) command similarly adds a | 13954 | The @kbd{d @}} (@code{calc-right-label}) command similarly adds a |
| 13954 | label on the righthand side. It does not affect positioning of | 13955 | label on the righthand side. It does not affect positioning of |
| 13955 | the stack entries unless they are right-justified. Also, if both | 13956 | the stack entries unless they are right-justified. Also, if both |
| 13956 | a line width and an origin are given in right-justified mode, the | 13957 | a line width and an origin are given in Right-Justified mode, the |
| 13957 | stack entry is justified to the origin and the righthand label is | 13958 | stack entry is justified to the origin and the righthand label is |
| 13958 | justified to the line width. | 13959 | justified to the line width. |
| 13959 | 13960 | ||
| 13960 | One application of labels would be to add equation numbers to | 13961 | One application of labels would be to add equation numbers to |
| 13961 | formulas you are manipulating in Calc and then copying into a | 13962 | formulas you are manipulating in Calc and then copying into a |
| 13962 | document (possibly using Embedded Mode). The equations would | 13963 | document (possibly using Embedded mode). The equations would |
| 13963 | typically be centered, and the equation numbers would be on the | 13964 | typically be centered, and the equation numbers would be on the |
| 13964 | left or right as you prefer. | 13965 | left or right as you prefer. |
| 13965 | 13966 | ||
| @@ -14061,7 +14062,7 @@ such as powers, quotients, and square roots: | |||
| 14061 | @noindent | 14062 | @noindent |
| 14062 | in place of @samp{sqrt((a+1)/b + c^2)}. | 14063 | in place of @samp{sqrt((a+1)/b + c^2)}. |
| 14063 | 14064 | ||
| 14064 | Subscripts like @samp{a_i} are displayed as actual subscripts in ``big'' | 14065 | Subscripts like @samp{a_i} are displayed as actual subscripts in Big |
| 14065 | mode. Double subscripts, @samp{a_i_j} (@samp{subscr(subscr(a, i), j)}) | 14066 | mode. Double subscripts, @samp{a_i_j} (@samp{subscr(subscr(a, i), j)}) |
| 14066 | are displayed as @samp{a} with subscripts separated by commas: | 14067 | are displayed as @samp{a} with subscripts separated by commas: |
| 14067 | @samp{i, j}. They must still be entered in the usual underscore | 14068 | @samp{i, j}. They must still be entered in the usual underscore |
| @@ -14134,12 +14135,12 @@ In C mode, vectors and matrices use curly braces instead of brackets. | |||
| 14134 | Octal and hexadecimal values are written with leading @samp{0} or @samp{0x} | 14135 | Octal and hexadecimal values are written with leading @samp{0} or @samp{0x} |
| 14135 | rather than using the @samp{#} symbol. Array subscripting is | 14136 | rather than using the @samp{#} symbol. Array subscripting is |
| 14136 | translated into @code{subscr} calls, so that @samp{a[i]} in C | 14137 | translated into @code{subscr} calls, so that @samp{a[i]} in C |
| 14137 | mode is the same as @samp{a_i} in normal mode. Assignments | 14138 | mode is the same as @samp{a_i} in Normal mode. Assignments |
| 14138 | turn into the @code{assign} function, which Calc normally displays | 14139 | turn into the @code{assign} function, which Calc normally displays |
| 14139 | using the @samp{:=} symbol. | 14140 | using the @samp{:=} symbol. |
| 14140 | 14141 | ||
| 14141 | The variables @code{var-pi} and @code{var-e} would be displayed @samp{pi} | 14142 | The variables @code{var-pi} and @code{var-e} would be displayed @samp{pi} |
| 14142 | and @samp{e} in normal mode, but in C mode they are displayed as | 14143 | and @samp{e} in Normal mode, but in C mode they are displayed as |
| 14143 | @samp{M_PI} and @samp{M_E}, corresponding to the names of constants | 14144 | @samp{M_PI} and @samp{M_E}, corresponding to the names of constants |
| 14144 | typically provided in the @file{<math.h>} header. Functions whose | 14145 | typically provided in the @file{<math.h>} header. Functions whose |
| 14145 | names are different in C are translated automatically for entry and | 14146 | names are different in C are translated automatically for entry and |
| @@ -14181,7 +14182,7 @@ function!). | |||
| 14181 | 14182 | ||
| 14182 | Underscores are allowed in variable and function names in all of these | 14183 | Underscores are allowed in variable and function names in all of these |
| 14183 | language modes. The underscore here is equivalent to the @samp{#} in | 14184 | language modes. The underscore here is equivalent to the @samp{#} in |
| 14184 | normal mode, or to hyphens in the underlying Emacs Lisp variable names. | 14185 | Normal mode, or to hyphens in the underlying Emacs Lisp variable names. |
| 14185 | 14186 | ||
| 14186 | FORTRAN and Pascal modes normally do not adjust the case of letters in | 14187 | FORTRAN and Pascal modes normally do not adjust the case of letters in |
| 14187 | formulas. Most built-in Calc names use lower-case letters. If you use a | 14188 | formulas. Most built-in Calc names use lower-case letters. If you use a |
| @@ -14823,7 +14824,7 @@ object. | |||
| 14823 | @tindex choriz | 14824 | @tindex choriz |
| 14824 | The @code{choriz} function takes a vector of objects and composes | 14825 | The @code{choriz} function takes a vector of objects and composes |
| 14825 | them horizontally. For example, @samp{choriz([17, a b/c, d])} formats | 14826 | them horizontally. For example, @samp{choriz([17, a b/c, d])} formats |
| 14826 | as @w{@samp{17a b / cd}} in normal language mode, or as | 14827 | as @w{@samp{17a b / cd}} in Normal language mode, or as |
| 14827 | 14828 | ||
| 14828 | @example | 14829 | @example |
| 14829 | @group | 14830 | @group |
| @@ -15086,7 +15087,7 @@ then return a certain measurement of the composition as an integer. | |||
| 15086 | @tindex cwidth | 15087 | @tindex cwidth |
| 15087 | The @code{cwidth} function measures the width, in characters, of a | 15088 | The @code{cwidth} function measures the width, in characters, of a |
| 15088 | composition. For example, @samp{cwidth(a + b)} is 5, and | 15089 | composition. For example, @samp{cwidth(a + b)} is 5, and |
| 15089 | @samp{cwidth(a / b)} is 5 in normal mode, 1 in Big mode, and 11 in | 15090 | @samp{cwidth(a / b)} is 5 in Normal mode, 1 in Big mode, and 11 in |
| 15090 | @TeX{} mode (for @samp{@{a \over b@}}). The argument may involve | 15091 | @TeX{} mode (for @samp{@{a \over b@}}). The argument may involve |
| 15091 | the composition functions described in this section. | 15092 | the composition functions described in this section. |
| 15092 | 15093 | ||
| @@ -15262,7 +15263,7 @@ unrelated to the syntax tables described in the Emacs manual.) | |||
| 15262 | @pindex calc-edit-user-syntax | 15263 | @pindex calc-edit-user-syntax |
| 15263 | The @kbd{Z S} (@code{calc-edit-user-syntax}) command edits the | 15264 | The @kbd{Z S} (@code{calc-edit-user-syntax}) command edits the |
| 15264 | syntax table for the current language mode. If you want your | 15265 | syntax table for the current language mode. If you want your |
| 15265 | syntax to work in any language, define it in the normal language | 15266 | syntax to work in any language, define it in the Normal language |
| 15266 | mode. Type @kbd{M-# M-#} to finish editing the syntax table, or | 15267 | mode. Type @kbd{M-# M-#} to finish editing the syntax table, or |
| 15267 | @kbd{M-# x} to cancel the edit. The @kbd{m m} command saves all | 15268 | @kbd{M-# x} to cancel the edit. The @kbd{m m} command saves all |
| 15268 | the syntax tables along with the other mode settings; | 15269 | the syntax tables along with the other mode settings; |
| @@ -15293,7 +15294,7 @@ zero or more expressions separated by commas, and @samp{)}.'' | |||
| 15293 | A @dfn{syntax table} is a list of user-defined @dfn{syntax rules}, | 15294 | A @dfn{syntax table} is a list of user-defined @dfn{syntax rules}, |
| 15294 | which allow you to specify new patterns to define your own | 15295 | which allow you to specify new patterns to define your own |
| 15295 | favorite input notations. Calc's parser always checks the syntax | 15296 | favorite input notations. Calc's parser always checks the syntax |
| 15296 | table for the current language mode, then the table for the normal | 15297 | table for the current language mode, then the table for the Normal |
| 15297 | language mode, before it uses its built-in rules to parse an | 15298 | language mode, before it uses its built-in rules to parse an |
| 15298 | algebraic formula you have entered. Each syntax rule should go on | 15299 | algebraic formula you have entered. Each syntax rule should go on |
| 15299 | its own line; it consists of a @dfn{pattern}, a @samp{:=} symbol, | 15300 | its own line; it consists of a @dfn{pattern}, a @samp{:=} symbol, |
| @@ -15648,7 +15649,7 @@ In this approach, we allow @samp{#2} to equal the whole expression | |||
| 15648 | @samp{i=1..10}. Then, we use @code{matches} to break it apart into | 15649 | @samp{i=1..10}. Then, we use @code{matches} to break it apart into |
| 15649 | its components. If the expression turns out not to match the pattern, | 15650 | its components. If the expression turns out not to match the pattern, |
| 15650 | the syntax rule will fail. Note that @kbd{Z S} always uses Calc's | 15651 | the syntax rule will fail. Note that @kbd{Z S} always uses Calc's |
| 15651 | normal language mode for editing expressions in syntax rules, so we | 15652 | Normal language mode for editing expressions in syntax rules, so we |
| 15652 | must use regular Calc notation for the interval @samp{[b..c]} that | 15653 | must use regular Calc notation for the interval @samp{[b..c]} that |
| 15653 | will correspond to the Maple mode interval @samp{1..10}. | 15654 | will correspond to the Maple mode interval @samp{1..10}. |
| 15654 | 15655 | ||
| @@ -15721,11 +15722,11 @@ Polar mode. Value is 0 (rectangular) or 1 (polar); default is 0. | |||
| 15721 | Command is @kbd{m p}. | 15722 | Command is @kbd{m p}. |
| 15722 | 15723 | ||
| 15723 | @item | 15724 | @item |
| 15724 | Matrix/scalar mode. Default value is @mathit{-1}. Value is 0 for scalar | 15725 | Matrix/Scalar mode. Default value is @mathit{-1}. Value is 0 for Scalar |
| 15725 | mode, @mathit{-2} for matrix mode, or @var{N} for | 15726 | mode, @mathit{-2} for Matrix mode, or @var{N} for |
| 15726 | @texline @math{N\times N} | 15727 | @texline @math{N\times N} |
| 15727 | @infoline @var{N}x@var{N} | 15728 | @infoline @var{N}x@var{N} |
| 15728 | matrix mode. Command is @kbd{m v}. | 15729 | Matrix mode. Command is @kbd{m v}. |
| 15729 | 15730 | ||
| 15730 | @item | 15731 | @item |
| 15731 | Simplification mode. Default is 1. Value is @mathit{-1} for off (@kbd{m O}), | 15732 | Simplification mode. Default is 1. Value is @mathit{-1} for off (@kbd{m O}), |
| @@ -15760,7 +15761,7 @@ programming commands. @xref{Conditionals in Macros}.) | |||
| 15760 | @cindex Mode line indicators | 15761 | @cindex Mode line indicators |
| 15761 | This section is a summary of all symbols that can appear on the | 15762 | This section is a summary of all symbols that can appear on the |
| 15762 | Calc mode line, the highlighted bar that appears under the Calc | 15763 | Calc mode line, the highlighted bar that appears under the Calc |
| 15763 | stack window (or under an editing window in Embedded Mode). | 15764 | stack window (or under an editing window in Embedded mode). |
| 15764 | 15765 | ||
| 15765 | The basic mode line format is: | 15766 | The basic mode line format is: |
| 15766 | 15767 | ||
| @@ -15772,7 +15773,7 @@ The @samp{%%} is the Emacs symbol for ``read-only''; it shows that | |||
| 15772 | regular Emacs commands are not allowed to edit the stack buffer | 15773 | regular Emacs commands are not allowed to edit the stack buffer |
| 15773 | as if it were text. | 15774 | as if it were text. |
| 15774 | 15775 | ||
| 15775 | The word @samp{Calc:} changes to @samp{CalcEmbed:} if Embedded Mode | 15776 | The word @samp{Calc:} changes to @samp{CalcEmbed:} if Embedded mode |
| 15776 | is enabled. The words after this describe the various Calc modes | 15777 | is enabled. The words after this describe the various Calc modes |
| 15777 | that are in effect. | 15778 | that are in effect. |
| 15778 | 15779 | ||
| @@ -15800,7 +15801,7 @@ Symbolic mode (@kbd{m s}; @pxref{Symbolic Mode}). | |||
| 15800 | Matrix mode (@kbd{m v}; @pxref{Matrix Mode}). | 15801 | Matrix mode (@kbd{m v}; @pxref{Matrix Mode}). |
| 15801 | 15802 | ||
| 15802 | @item Matrix@var{n} | 15803 | @item Matrix@var{n} |
| 15803 | Dimensioned matrix mode (@kbd{C-u @var{n} m v}). | 15804 | Dimensioned Matrix mode (@kbd{C-u @var{n} m v}). |
| 15804 | 15805 | ||
| 15805 | @item Scalar | 15806 | @item Scalar |
| 15806 | Scalar mode (@kbd{m v}; @pxref{Matrix Mode}). | 15807 | Scalar mode (@kbd{m v}; @pxref{Matrix Mode}). |
| @@ -15815,7 +15816,7 @@ Fraction mode (@kbd{m f}; @pxref{Fraction Mode}). | |||
| 15815 | Infinite mode (@kbd{m i}; @pxref{Infinite Mode}). | 15816 | Infinite mode (@kbd{m i}; @pxref{Infinite Mode}). |
| 15816 | 15817 | ||
| 15817 | @item +Inf | 15818 | @item +Inf |
| 15818 | Positive infinite mode (@kbd{C-u 0 m i}). | 15819 | Positive Infinite mode (@kbd{C-u 0 m i}). |
| 15819 | 15820 | ||
| 15820 | @item NoSimp | 15821 | @item NoSimp |
| 15821 | Default simplifications off (@kbd{m O}; @pxref{Simplification Modes}). | 15822 | Default simplifications off (@kbd{m O}; @pxref{Simplification Modes}). |
| @@ -16023,14 +16024,14 @@ to every element of a vector. | |||
| 16023 | 16024 | ||
| 16024 | If either argument of @kbd{+} is a complex number, the result will in general | 16025 | If either argument of @kbd{+} is a complex number, the result will in general |
| 16025 | be complex. If one argument is in rectangular form and the other polar, | 16026 | be complex. If one argument is in rectangular form and the other polar, |
| 16026 | the current Polar Mode determines the form of the result. If Symbolic | 16027 | the current Polar mode determines the form of the result. If Symbolic |
| 16027 | Mode is enabled, the sum may be left as a formula if the necessary | 16028 | mode is enabled, the sum may be left as a formula if the necessary |
| 16028 | conversions for polar addition are non-trivial. | 16029 | conversions for polar addition are non-trivial. |
| 16029 | 16030 | ||
| 16030 | If both arguments of @kbd{+} are HMS forms, the forms are added according to | 16031 | If both arguments of @kbd{+} are HMS forms, the forms are added according to |
| 16031 | the usual conventions of hours-minutes-seconds notation. If one argument | 16032 | the usual conventions of hours-minutes-seconds notation. If one argument |
| 16032 | is an HMS form and the other is a number, that number is converted from | 16033 | is an HMS form and the other is a number, that number is converted from |
| 16033 | degrees or radians (depending on the current Angular Mode) to HMS format | 16034 | degrees or radians (depending on the current Angular mode) to HMS format |
| 16034 | and then the two HMS forms are added. | 16035 | and then the two HMS forms are added. |
| 16035 | 16036 | ||
| 16036 | If one argument of @kbd{+} is a date form, the other can be either a | 16037 | If one argument of @kbd{+} is a date form, the other can be either a |
| @@ -16182,7 +16183,7 @@ must be positive real number. | |||
| 16182 | @tindex fdiv | 16183 | @tindex fdiv |
| 16183 | The @kbd{:} (@code{calc-fdiv}) command [@code{fdiv} function in a formula] | 16184 | The @kbd{:} (@code{calc-fdiv}) command [@code{fdiv} function in a formula] |
| 16184 | divides the two integers on the top of the stack to produce a fractional | 16185 | divides the two integers on the top of the stack to produce a fractional |
| 16185 | result. This is a convenient shorthand for enabling Fraction Mode (with | 16186 | result. This is a convenient shorthand for enabling Fraction mode (with |
| 16186 | @kbd{m f}) temporarily and using @samp{/}. Note that during numeric entry | 16187 | @kbd{m f}) temporarily and using @samp{/}. Note that during numeric entry |
| 16187 | the @kbd{:} key is interpreted as a fraction separator, so to divide 8 by 6 | 16188 | the @kbd{:} key is interpreted as a fraction separator, so to divide 8 by 6 |
| 16188 | you would have to type @kbd{8 @key{RET} 6 @key{RET} :}. (Of course, in | 16189 | you would have to type @kbd{8 @key{RET} 6 @key{RET} :}. (Of course, in |
| @@ -16236,7 +16237,7 @@ matrix, it computes the inverse of that matrix. | |||
| 16236 | @tindex sqrt | 16237 | @tindex sqrt |
| 16237 | The @kbd{Q} (@code{calc-sqrt}) [@code{sqrt}] command computes the square | 16238 | The @kbd{Q} (@code{calc-sqrt}) [@code{sqrt}] command computes the square |
| 16238 | root of a number. For a negative real argument, the result will be a | 16239 | root of a number. For a negative real argument, the result will be a |
| 16239 | complex number whose form is determined by the current Polar Mode. | 16240 | complex number whose form is determined by the current Polar mode. |
| 16240 | 16241 | ||
| 16241 | @kindex f h | 16242 | @kindex f h |
| 16242 | @pindex calc-hypot | 16243 | @pindex calc-hypot |
| @@ -16298,7 +16299,7 @@ The @kbd{f S} (@code{calc-scale-float}) [@code{scf}] function scales a number | |||
| 16298 | by a given power of ten. Thus, @samp{scf(mant(x), xpon(x)) = x} for any | 16299 | by a given power of ten. Thus, @samp{scf(mant(x), xpon(x)) = x} for any |
| 16299 | real @samp{x}. The second argument must be an integer, but the first | 16300 | real @samp{x}. The second argument must be an integer, but the first |
| 16300 | may actually be any numeric value. For example, @samp{scf(5,-2) = 0.05} | 16301 | may actually be any numeric value. For example, @samp{scf(5,-2) = 0.05} |
| 16301 | or @samp{1:20} depending on the current Fraction Mode. | 16302 | or @samp{1:20} depending on the current Fraction mode. |
| 16302 | 16303 | ||
| 16303 | @kindex f [ | 16304 | @kindex f [ |
| 16304 | @kindex f ] | 16305 | @kindex f ] |
| @@ -16482,7 +16483,7 @@ be in the range @mathit{-180} degrees (exclusive) to @mathit{+180} degrees | |||
| 16482 | The @code{calc-imaginary} command multiplies the number on the | 16483 | The @code{calc-imaginary} command multiplies the number on the |
| 16483 | top of the stack by the imaginary number @expr{i = (0,1)}. This | 16484 | top of the stack by the imaginary number @expr{i = (0,1)}. This |
| 16484 | command is not normally bound to a key in Calc, but it is available | 16485 | command is not normally bound to a key in Calc, but it is available |
| 16485 | on the @key{IMAG} button in Keypad Mode. | 16486 | on the @key{IMAG} button in Keypad mode. |
| 16486 | 16487 | ||
| 16487 | @kindex f r | 16488 | @kindex f r |
| 16488 | @pindex calc-re | 16489 | @pindex calc-re |
| @@ -17761,7 +17762,7 @@ formulas below for symbolic arguments only when you use the @kbd{a "} | |||
| 17761 | integrals or solving equations involving the functions. | 17762 | integrals or solving equations involving the functions. |
| 17762 | 17763 | ||
| 17763 | @ifinfo | 17764 | @ifinfo |
| 17764 | These formulas are shown using the conventions of ``Big'' display | 17765 | These formulas are shown using the conventions of Big display |
| 17765 | mode (@kbd{d B}); for example, the formula for @code{fv} written | 17766 | mode (@kbd{d B}); for example, the formula for @code{fv} written |
| 17766 | linearly is @samp{pmt * ((1 + rate)^n) - 1) / rate}. | 17767 | linearly is @samp{pmt * ((1 + rate)^n) - 1) / rate}. |
| 17767 | 17768 | ||
| @@ -18217,7 +18218,7 @@ to any base. For example, @kbd{1024 @key{RET} 2 B} produces 10, since | |||
| 18217 | @infoline @expr{2^10 = 1024}. | 18218 | @infoline @expr{2^10 = 1024}. |
| 18218 | In certain cases like @samp{log(3,9)}, the result | 18219 | In certain cases like @samp{log(3,9)}, the result |
| 18219 | will be either @expr{1:2} or @expr{0.5} depending on the current Fraction | 18220 | will be either @expr{1:2} or @expr{0.5} depending on the current Fraction |
| 18220 | Mode setting. With the Inverse flag [@code{alog}], this command is | 18221 | mode setting. With the Inverse flag [@code{alog}], this command is |
| 18221 | similar to @kbd{^} except that the order of the arguments is reversed. | 18222 | similar to @kbd{^} except that the order of the arguments is reversed. |
| 18222 | 18223 | ||
| 18223 | @kindex f I | 18224 | @kindex f I |
| @@ -18273,7 +18274,7 @@ of the current angular mode. @xref{Basic Operations on Units}. | |||
| 18273 | Also, the symbolic variable @code{pi} is not ordinarily recognized in | 18274 | Also, the symbolic variable @code{pi} is not ordinarily recognized in |
| 18274 | arguments to trigonometric functions, as in @samp{sin(3 pi / 4)}, but | 18275 | arguments to trigonometric functions, as in @samp{sin(3 pi / 4)}, but |
| 18275 | the @kbd{a s} (@code{calc-simplify}) command recognizes many such | 18276 | the @kbd{a s} (@code{calc-simplify}) command recognizes many such |
| 18276 | formulas when the current angular mode is radians @emph{and} symbolic | 18277 | formulas when the current angular mode is Radians @emph{and} Symbolic |
| 18277 | mode is enabled; this example would be replaced by @samp{sqrt(2) / 2}. | 18278 | mode is enabled; this example would be replaced by @samp{sqrt(2) / 2}. |
| 18278 | @xref{Symbolic Mode}. Beware, this simplification occurs even if you | 18279 | @xref{Symbolic Mode}. Beware, this simplification occurs even if you |
| 18279 | have stored a different value in the variable @samp{pi}; this is one | 18280 | have stored a different value in the variable @samp{pi}; this is one |
| @@ -18282,7 +18283,7 @@ the form @expr{x} plus a multiple of @cpiover{2} are also simplified. | |||
| 18282 | Calc includes similar formulas for @code{cos} and @code{tan}. | 18283 | Calc includes similar formulas for @code{cos} and @code{tan}. |
| 18283 | 18284 | ||
| 18284 | The @kbd{a s} command knows all angles which are integer multiples of | 18285 | The @kbd{a s} command knows all angles which are integer multiples of |
| 18285 | @cpiover{12}, @cpiover{10}, or @cpiover{8} radians. In degrees mode, | 18286 | @cpiover{12}, @cpiover{10}, or @cpiover{8} radians. In Degrees mode, |
| 18286 | analogous simplifications occur for integer multiples of 15 or 18 | 18287 | analogous simplifications occur for integer multiples of 15 or 18 |
| 18287 | degrees, and for arguments plus multiples of 90 degrees. | 18288 | degrees, and for arguments plus multiples of 90 degrees. |
| 18288 | 18289 | ||
| @@ -18633,7 +18634,7 @@ For @samp{arctanh(z)}: This is defined by @samp{(ln(1+z) - ln(1-z)) / 2}. | |||
| 18633 | The branch cuts are on the real axis, less than @mathit{-1} and greater than 1. | 18634 | The branch cuts are on the real axis, less than @mathit{-1} and greater than 1. |
| 18634 | 18635 | ||
| 18635 | The following tables for @code{arcsin}, @code{arccos}, and | 18636 | The following tables for @code{arcsin}, @code{arccos}, and |
| 18636 | @code{arctan} assume the current angular mode is radians. The | 18637 | @code{arctan} assume the current angular mode is Radians. The |
| 18637 | hyperbolic functions operate independently of the angular mode. | 18638 | hyperbolic functions operate independently of the angular mode. |
| 18638 | 18639 | ||
| 18639 | @smallexample | 18640 | @smallexample |
| @@ -19478,7 +19479,7 @@ Note that the prefix argument can have an effect even when the input is | |||
| 19478 | not a vector. For example, if the input is the number @mathit{-5}, then | 19479 | not a vector. For example, if the input is the number @mathit{-5}, then |
| 19479 | @kbd{c-u -1 v u} yields @mathit{-5} and 0 (the components of @mathit{-5} | 19480 | @kbd{c-u -1 v u} yields @mathit{-5} and 0 (the components of @mathit{-5} |
| 19480 | when viewed as a rectangular complex number); @kbd{C-u -2 v u} yields 5 | 19481 | when viewed as a rectangular complex number); @kbd{C-u -2 v u} yields 5 |
| 19481 | and 180 (assuming degrees mode); and @kbd{C-u -10 v u} yields @mathit{-5} | 19482 | and 180 (assuming Degrees mode); and @kbd{C-u -10 v u} yields @mathit{-5} |
| 19482 | and 1 (the numerator and denominator of @mathit{-5}, viewed as a rational | 19483 | and 1 (the numerator and denominator of @mathit{-5}, viewed as a rational |
| 19483 | number). Plain @kbd{v u} with this input would complain that the input | 19484 | number). Plain @kbd{v u} with this input would complain that the input |
| 19484 | is not a composite object. | 19485 | is not a composite object. |
| @@ -19608,7 +19609,7 @@ such generic identity matrices, and if one is combined with a matrix | |||
| 19608 | whose size is known, it is converted automatically to an identity | 19609 | whose size is known, it is converted automatically to an identity |
| 19609 | matrix of a suitable matching size. The @kbd{v i} command with an | 19610 | matrix of a suitable matching size. The @kbd{v i} command with an |
| 19610 | argument of zero creates a generic identity matrix, @samp{idn(1)}. | 19611 | argument of zero creates a generic identity matrix, @samp{idn(1)}. |
| 19611 | Note that in dimensioned matrix mode (@pxref{Matrix Mode}), generic | 19612 | Note that in dimensioned Matrix mode (@pxref{Matrix Mode}), generic |
| 19612 | identity matrices are immediately expanded to the current default | 19613 | identity matrices are immediately expanded to the current default |
| 19613 | dimensions. | 19614 | dimensions. |
| 19614 | 19615 | ||
| @@ -21265,11 +21266,11 @@ for anything else'') prefix. | |||
| 21265 | using regular Emacs editing commands. | 21266 | using regular Emacs editing commands. |
| 21266 | 21267 | ||
| 21267 | When doing algebraic work, you may find several of the Calculator's | 21268 | When doing algebraic work, you may find several of the Calculator's |
| 21268 | modes to be helpful, including algebraic-simplification mode (@kbd{m A}) | 21269 | modes to be helpful, including Algebraic Simplification mode (@kbd{m A}) |
| 21269 | or no-simplification mode (@kbd{m O}), | 21270 | or No-Simplification mode (@kbd{m O}), |
| 21270 | algebraic-entry mode (@kbd{m a}), fraction mode (@kbd{m f}), and | 21271 | Algebraic entry mode (@kbd{m a}), Fraction mode (@kbd{m f}), and |
| 21271 | symbolic mode (@kbd{m s}). @xref{Mode Settings}, for discussions | 21272 | Symbolic mode (@kbd{m s}). @xref{Mode Settings}, for discussions |
| 21272 | of these modes. You may also wish to select ``big'' display mode (@kbd{d B}). | 21273 | of these modes. You may also wish to select Big display mode (@kbd{d B}). |
| 21273 | @xref{Normal Language Modes}. | 21274 | @xref{Normal Language Modes}. |
| 21274 | 21275 | ||
| 21275 | @menu | 21276 | @menu |
| @@ -21323,7 +21324,7 @@ sub-formula, and press @w{@kbd{j s}} (@code{calc-select-here}). Calc will | |||
| 21323 | highlight the smallest portion of the formula that contains that | 21324 | highlight the smallest portion of the formula that contains that |
| 21324 | character. By default the sub-formula is highlighted by blanking out | 21325 | character. By default the sub-formula is highlighted by blanking out |
| 21325 | all of the rest of the formula with dots. Selection works in any | 21326 | all of the rest of the formula with dots. Selection works in any |
| 21326 | display mode but is perhaps easiest in ``big'' (@kbd{d B}) mode. | 21327 | display mode but is perhaps easiest in Big mode (@kbd{d B}). |
| 21327 | Suppose you enter the following formula: | 21328 | Suppose you enter the following formula: |
| 21328 | 21329 | ||
| 21329 | @smallexample | 21330 | @smallexample |
| @@ -21353,7 +21354,7 @@ to | |||
| 21353 | Every character not part of the sub-formula @samp{b} has been changed | 21354 | Every character not part of the sub-formula @samp{b} has been changed |
| 21354 | to a dot. The @samp{*} next to the line number is to remind you that | 21355 | to a dot. The @samp{*} next to the line number is to remind you that |
| 21355 | the formula has a portion of it selected. (In this case, it's very | 21356 | the formula has a portion of it selected. (In this case, it's very |
| 21356 | obvious, but it might not always be. If Embedded Mode is enabled, | 21357 | obvious, but it might not always be. If Embedded mode is enabled, |
| 21357 | the word @samp{Sel} also appears in the mode line because the stack | 21358 | the word @samp{Sel} also appears in the mode line because the stack |
| 21358 | may not be visible. @pxref{Embedded Mode}.) | 21359 | may not be visible. @pxref{Embedded Mode}.) |
| 21359 | 21360 | ||
| @@ -22003,9 +22004,9 @@ but which also substitutes stored values for variables in the formula. | |||
| 22003 | Use @kbd{a v} if you want the variables to ignore their stored values. | 22004 | Use @kbd{a v} if you want the variables to ignore their stored values. |
| 22004 | 22005 | ||
| 22005 | If you give a numeric prefix argument of 2 to @kbd{a v}, it simplifies | 22006 | If you give a numeric prefix argument of 2 to @kbd{a v}, it simplifies |
| 22006 | as if in algebraic simplification mode. This is equivalent to typing | 22007 | as if in Algebraic Simplification mode. This is equivalent to typing |
| 22007 | @kbd{a s}; @pxref{Simplifying Formulas}. If you give a numeric prefix | 22008 | @kbd{a s}; @pxref{Simplifying Formulas}. If you give a numeric prefix |
| 22008 | of 3 or more, it uses extended simplification mode (@kbd{a e}). | 22009 | of 3 or more, it uses Extended Simplification mode (@kbd{a e}). |
| 22009 | 22010 | ||
| 22010 | If you give a negative prefix argument @mathit{-1}, @mathit{-2}, or @mathit{-3}, | 22011 | If you give a negative prefix argument @mathit{-1}, @mathit{-2}, or @mathit{-3}, |
| 22011 | it simplifies in the corresponding mode but only works on the top-level | 22012 | it simplifies in the corresponding mode but only works on the top-level |
| @@ -22013,7 +22014,7 @@ function call of the formula. For example, @samp{(2 + 3) * (2 + 3)} will | |||
| 22013 | simplify to @samp{(2 + 3)^2}, without simplifying the sub-formulas | 22014 | simplify to @samp{(2 + 3)^2}, without simplifying the sub-formulas |
| 22014 | @samp{2 + 3}. As another example, typing @kbd{V R +} to sum the vector | 22015 | @samp{2 + 3}. As another example, typing @kbd{V R +} to sum the vector |
| 22015 | @samp{[1, 2, 3, 4]} produces the formula @samp{reduce(add, [1, 2, 3, 4])} | 22016 | @samp{[1, 2, 3, 4]} produces the formula @samp{reduce(add, [1, 2, 3, 4])} |
| 22016 | in no-simplify mode. Using @kbd{a v} will evaluate this all the way to | 22017 | in No-Simplify mode. Using @kbd{a v} will evaluate this all the way to |
| 22017 | 10; using @kbd{C-u - a v} will evaluate it only to @samp{1 + 2 + 3 + 4}. | 22018 | 10; using @kbd{C-u - a v} will evaluate it only to @samp{1 + 2 + 3 + 4}. |
| 22018 | (@xref{Reducing and Mapping}.) | 22019 | (@xref{Reducing and Mapping}.) |
| 22019 | 22020 | ||
| @@ -22021,7 +22022,7 @@ in no-simplify mode. Using @kbd{a v} will evaluate this all the way to | |||
| 22021 | @tindex evalvn | 22022 | @tindex evalvn |
| 22022 | The @kbd{=} command corresponds to the @code{evalv} function, and | 22023 | The @kbd{=} command corresponds to the @code{evalv} function, and |
| 22023 | the related @kbd{N} command, which is like @kbd{=} but temporarily | 22024 | the related @kbd{N} command, which is like @kbd{=} but temporarily |
| 22024 | disables symbolic (@kbd{m s}) mode during the evaluation, corresponds | 22025 | disables Symbolic mode (@kbd{m s}) during the evaluation, corresponds |
| 22025 | to the @code{evalvn} function. (These commands interpret their prefix | 22026 | to the @code{evalvn} function. (These commands interpret their prefix |
| 22026 | arguments differently than @kbd{a v}; @kbd{=} treats the prefix as | 22027 | arguments differently than @kbd{a v}; @kbd{=} treats the prefix as |
| 22027 | the number of stack elements to evaluate at once, and @kbd{N} treats | 22028 | the number of stack elements to evaluate at once, and @kbd{N} treats |
| @@ -22196,7 +22197,7 @@ is evaluated to @expr{3}. Evaluation does not occur if the arguments | |||
| 22196 | to a function are somehow of the wrong type @expr{@t{tan}([2,3,4])}), | 22197 | to a function are somehow of the wrong type @expr{@t{tan}([2,3,4])}), |
| 22197 | range (@expr{@t{tan}(90)}), or number (@expr{@t{tan}(3,5)}), | 22198 | range (@expr{@t{tan}(90)}), or number (@expr{@t{tan}(3,5)}), |
| 22198 | or if the function name is not recognized (@expr{@t{f}(5)}), or if | 22199 | or if the function name is not recognized (@expr{@t{f}(5)}), or if |
| 22199 | ``symbolic'' mode (@pxref{Symbolic Mode}) prevents evaluation | 22200 | Symbolic mode (@pxref{Symbolic Mode}) prevents evaluation |
| 22200 | (@expr{@t{sqrt}(2)}). | 22201 | (@expr{@t{sqrt}(2)}). |
| 22201 | 22202 | ||
| 22202 | Calc simplifies (evaluates) the arguments to a function before it | 22203 | Calc simplifies (evaluates) the arguments to a function before it |
| @@ -22304,7 +22305,7 @@ to @expr{-a}. | |||
| 22304 | The products @expr{1 a} and @expr{a 1} are simplified to @expr{a}; | 22305 | The products @expr{1 a} and @expr{a 1} are simplified to @expr{a}; |
| 22305 | @expr{(-1) a} and @expr{a (-1)} are simplified to @expr{-a}; | 22306 | @expr{(-1) a} and @expr{a (-1)} are simplified to @expr{-a}; |
| 22306 | @expr{0 a} and @expr{a 0} are simplified to @expr{0}, except that | 22307 | @expr{0 a} and @expr{a 0} are simplified to @expr{0}, except that |
| 22307 | in matrix mode where @expr{a} is not provably scalar the result | 22308 | in Matrix mode where @expr{a} is not provably scalar the result |
| 22308 | is the generic zero matrix @samp{idn(0)}, and that if @expr{a} is | 22309 | is the generic zero matrix @samp{idn(0)}, and that if @expr{a} is |
| 22309 | infinite the result is @samp{nan}. | 22310 | infinite the result is @samp{nan}. |
| 22310 | 22311 | ||
| @@ -22330,18 +22331,18 @@ or the implicit one-half of @expr{@t{sqrt}(x)}, and similarly for | |||
| 22330 | @expr{b}. The result is written using @samp{sqrt} or @samp{1/sqrt} | 22331 | @expr{b}. The result is written using @samp{sqrt} or @samp{1/sqrt} |
| 22331 | if the sum of the powers is @expr{1/2} or @expr{-1/2}, respectively. | 22332 | if the sum of the powers is @expr{1/2} or @expr{-1/2}, respectively. |
| 22332 | If the sum of the powers is zero, the product is simplified to | 22333 | If the sum of the powers is zero, the product is simplified to |
| 22333 | @expr{1} or to @samp{idn(1)} if matrix mode is enabled. | 22334 | @expr{1} or to @samp{idn(1)} if Matrix mode is enabled. |
| 22334 | 22335 | ||
| 22335 | The product of a negative power times anything but another negative | 22336 | The product of a negative power times anything but another negative |
| 22336 | power is changed to use division: | 22337 | power is changed to use division: |
| 22337 | @texline @math{x^{-2} y} | 22338 | @texline @math{x^{-2} y} |
| 22338 | @infoline @expr{x^(-2) y} | 22339 | @infoline @expr{x^(-2) y} |
| 22339 | goes to @expr{y / x^2} unless matrix mode is | 22340 | goes to @expr{y / x^2} unless Matrix mode is |
| 22340 | in effect and neither @expr{x} nor @expr{y} are scalar (in which | 22341 | in effect and neither @expr{x} nor @expr{y} are scalar (in which |
| 22341 | case it is considered unsafe to rearrange the order of the terms). | 22342 | case it is considered unsafe to rearrange the order of the terms). |
| 22342 | 22343 | ||
| 22343 | Finally, @expr{a (b/c)} is rewritten to @expr{(a b)/c}, and also | 22344 | Finally, @expr{a (b/c)} is rewritten to @expr{(a b)/c}, and also |
| 22344 | @expr{(a/b) c} is changed to @expr{(a c)/b} unless in matrix mode. | 22345 | @expr{(a/b) c} is changed to @expr{(a c)/b} unless in Matrix mode. |
| 22345 | 22346 | ||
| 22346 | @tex | 22347 | @tex |
| 22347 | \bigskip | 22348 | \bigskip |
| @@ -22368,7 +22369,7 @@ for any power @expr{c}. | |||
| 22368 | 22369 | ||
| 22369 | Also, @expr{(-a) / b} and @expr{a / (-b)} go to @expr{-(a/b)}; | 22370 | Also, @expr{(-a) / b} and @expr{a / (-b)} go to @expr{-(a/b)}; |
| 22370 | @expr{(a/b) / c} goes to @expr{a / (b c)}; and @expr{a / (b/c)} | 22371 | @expr{(a/b) / c} goes to @expr{a / (b c)}; and @expr{a / (b/c)} |
| 22371 | goes to @expr{(a c) / b} unless matrix mode prevents this | 22372 | goes to @expr{(a c) / b} unless Matrix mode prevents this |
| 22372 | rearrangement. Similarly, @expr{a / (b:c)} is simplified to | 22373 | rearrangement. Similarly, @expr{a / (b:c)} is simplified to |
| 22373 | @expr{(c:b) a} for any fraction @expr{b:c}. | 22374 | @expr{(c:b) a} for any fraction @expr{b:c}. |
| 22374 | 22375 | ||
| @@ -22392,7 +22393,7 @@ to @expr{a / (c - b)}, and @expr{(a - b) / (-c)} to @expr{(b - a) / c}. | |||
| 22392 | @end tex | 22393 | @end tex |
| 22393 | 22394 | ||
| 22394 | The formula @expr{x^0} is simplified to @expr{1}, or to @samp{idn(1)} | 22395 | The formula @expr{x^0} is simplified to @expr{1}, or to @samp{idn(1)} |
| 22395 | in matrix mode. The formula @expr{0^x} is simplified to @expr{0} | 22396 | in Matrix mode. The formula @expr{0^x} is simplified to @expr{0} |
| 22396 | unless @expr{x} is a negative number or complex number, in which | 22397 | unless @expr{x} is a negative number or complex number, in which |
| 22397 | case the result is an infinity or an unsimplified formula according | 22398 | case the result is an infinity or an unsimplified formula according |
| 22398 | to the current infinite mode. Note that @expr{0^0} is an | 22399 | to the current infinite mode. Note that @expr{0^0} is an |
| @@ -22568,7 +22569,7 @@ property that real-valued numbers, interval forms and infinities | |||
| 22568 | come first, and are sorted into increasing order. The @kbd{V S} | 22569 | come first, and are sorted into increasing order. The @kbd{V S} |
| 22569 | command uses the same ordering when sorting a vector. | 22570 | command uses the same ordering when sorting a vector. |
| 22570 | 22571 | ||
| 22571 | Sorting of terms of products is inhibited when matrix mode is | 22572 | Sorting of terms of products is inhibited when Matrix mode is |
| 22572 | turned on; in this case, Calc will never exchange the order of | 22573 | turned on; in this case, Calc will never exchange the order of |
| 22573 | two terms unless it knows at least one of the terms is a scalar. | 22574 | two terms unless it knows at least one of the terms is a scalar. |
| 22574 | 22575 | ||
| @@ -23176,7 +23177,7 @@ With a numeric prefix argument @var{n}, this command computes the | |||
| 23176 | @var{n}th derivative. | 23177 | @var{n}th derivative. |
| 23177 | 23178 | ||
| 23178 | When working with trigonometric functions, it is best to switch to | 23179 | When working with trigonometric functions, it is best to switch to |
| 23179 | radians mode first (with @w{@kbd{m r}}). The derivative of @samp{sin(x)} | 23180 | Radians mode first (with @w{@kbd{m r}}). The derivative of @samp{sin(x)} |
| 23180 | in degrees is @samp{(pi/180) cos(x)}, probably not the expected | 23181 | in degrees is @samp{(pi/180) cos(x)}, probably not the expected |
| 23181 | answer! | 23182 | answer! |
| 23182 | 23183 | ||
| @@ -23267,7 +23268,7 @@ due to a different choice of constant of integration. | |||
| 23267 | 23268 | ||
| 23268 | The Calculator remembers all the integrals it has done. If conditions | 23269 | The Calculator remembers all the integrals it has done. If conditions |
| 23269 | change in a way that would invalidate the old integrals, say, a switch | 23270 | change in a way that would invalidate the old integrals, say, a switch |
| 23270 | from degrees to radians mode, then they will be thrown out. If you | 23271 | from Degrees to Radians mode, then they will be thrown out. If you |
| 23271 | suspect this is not happening when it should, use the | 23272 | suspect this is not happening when it should, use the |
| 23272 | @code{calc-flush-caches} command; @pxref{Caches}. | 23273 | @code{calc-flush-caches} command; @pxref{Caches}. |
| 23273 | 23274 | ||
| @@ -23626,10 +23627,10 @@ which can be solved for @expr{x^3} using the quadratic equation, and then | |||
| 23626 | for @expr{x} by taking cube roots. But in many cases, like | 23627 | for @expr{x} by taking cube roots. But in many cases, like |
| 23627 | @expr{x^6 + x + 1}, Calc does not know how to rewrite the polynomial | 23628 | @expr{x^6 + x + 1}, Calc does not know how to rewrite the polynomial |
| 23628 | into a form it can solve. The @kbd{a P} command can still deliver a | 23629 | into a form it can solve. The @kbd{a P} command can still deliver a |
| 23629 | list of numerical roots, however, provided that symbolic mode (@kbd{m s}) | 23630 | list of numerical roots, however, provided that Symbolic mode (@kbd{m s}) |
| 23630 | is not turned on. (If you work with symbolic mode on, recall that the | 23631 | is not turned on. (If you work with Symbolic mode on, recall that the |
| 23631 | @kbd{N} (@code{calc-eval-num}) key is a handy way to reevaluate the | 23632 | @kbd{N} (@code{calc-eval-num}) key is a handy way to reevaluate the |
| 23632 | formula on the stack with symbolic mode temporarily off.) Naturally, | 23633 | formula on the stack with Symbolic mode temporarily off.) Naturally, |
| 23633 | @kbd{a P} can only provide numerical roots if the polynomial coefficients | 23634 | @kbd{a P} can only provide numerical roots if the polynomial coefficients |
| 23634 | are all numbers (real or complex). | 23635 | are all numbers (real or complex). |
| 23635 | 23636 | ||
| @@ -24244,9 +24245,9 @@ Note that since the constant and linear terms are enough to fit the | |||
| 24244 | data exactly, it's no surprise that Calc chose a tiny contribution | 24245 | data exactly, it's no surprise that Calc chose a tiny contribution |
| 24245 | for @expr{x^2}. (The fact that it's not exactly zero is due only | 24246 | for @expr{x^2}. (The fact that it's not exactly zero is due only |
| 24246 | to roundoff error. Since our data are exact integers, we could get | 24247 | to roundoff error. Since our data are exact integers, we could get |
| 24247 | an exact answer by typing @kbd{m f} first to get fraction mode. | 24248 | an exact answer by typing @kbd{m f} first to get Fraction mode. |
| 24248 | Then the @expr{x^2} term would vanish altogether. Usually, though, | 24249 | Then the @expr{x^2} term would vanish altogether. Usually, though, |
| 24249 | the data being fitted will be approximate floats so fraction mode | 24250 | the data being fitted will be approximate floats so Fraction mode |
| 24250 | won't help.) | 24251 | won't help.) |
| 24251 | 24252 | ||
| 24252 | Doing the @kbd{a F 2} fit on the data set with 14 instead of 13 | 24253 | Doing the @kbd{a F 2} fit on the data set with 14 instead of 13 |
| @@ -24271,7 +24272,7 @@ The actual coefficients we get with a precision of 12, like | |||
| 24271 | @expr{0.0416666663588}, clearly suffer from loss of precision. | 24272 | @expr{0.0416666663588}, clearly suffer from loss of precision. |
| 24272 | It is a good idea to increase the working precision to several | 24273 | It is a good idea to increase the working precision to several |
| 24273 | digits beyond what you need when you do a fitting operation. | 24274 | digits beyond what you need when you do a fitting operation. |
| 24274 | Or, if your data are exact, use fraction mode to get exact | 24275 | Or, if your data are exact, use Fraction mode to get exact |
| 24275 | results. | 24276 | results. |
| 24276 | 24277 | ||
| 24277 | You can type @kbd{i} instead of a digit at the model prompt to fit | 24278 | You can type @kbd{i} instead of a digit at the model prompt to fit |
| @@ -25942,12 +25943,12 @@ like @samp{(x + y) + (z - w)}, are not tried. | |||
| 25942 | 25943 | ||
| 25943 | Note that @samp{*} is not commutative when applied to matrices, but | 25944 | Note that @samp{*} is not commutative when applied to matrices, but |
| 25944 | rewrite rules pretend that it is. If you type @kbd{m v} to enable | 25945 | rewrite rules pretend that it is. If you type @kbd{m v} to enable |
| 25945 | matrix mode (@pxref{Matrix Mode}), rewrite rules will match @samp{*} | 25946 | Matrix mode (@pxref{Matrix Mode}), rewrite rules will match @samp{*} |
| 25946 | literally, ignoring its usual commutativity property. (In the | 25947 | literally, ignoring its usual commutativity property. (In the |
| 25947 | current implementation, the associativity also vanishes---it is as | 25948 | current implementation, the associativity also vanishes---it is as |
| 25948 | if the pattern had been enclosed in a @code{plain} marker; see below.) | 25949 | if the pattern had been enclosed in a @code{plain} marker; see below.) |
| 25949 | If you are applying rewrites to formulas with matrices, it's best to | 25950 | If you are applying rewrites to formulas with matrices, it's best to |
| 25950 | enable matrix mode first to prevent algebraically incorrect rewrites | 25951 | enable Matrix mode first to prevent algebraically incorrect rewrites |
| 25951 | from occurring. | 25952 | from occurring. |
| 25952 | 25953 | ||
| 25953 | The pattern @samp{-x} will actually match any expression. For example, | 25954 | The pattern @samp{-x} will actually match any expression. For example, |
| @@ -26424,8 +26425,8 @@ You must use @code{apply} for meta-variables with function names | |||
| 26424 | on both sides of a rewrite rule: @samp{apply(f, [x]) := f(x+1)} | 26425 | on both sides of a rewrite rule: @samp{apply(f, [x]) := f(x+1)} |
| 26425 | is @emph{not} correct, because it rewrites @samp{spam(6)} into | 26426 | is @emph{not} correct, because it rewrites @samp{spam(6)} into |
| 26426 | @samp{f(7)}. The righthand side should be @samp{apply(f, [x+1])}. | 26427 | @samp{f(7)}. The righthand side should be @samp{apply(f, [x+1])}. |
| 26427 | Also note that you will have to use no-simplify (@kbd{m O}) | 26428 | Also note that you will have to use No-Simplify mode (@kbd{m O}) |
| 26428 | mode when entering this rule so that the @code{apply} isn't | 26429 | when entering this rule so that the @code{apply} isn't |
| 26429 | evaluated immediately to get the new rule @samp{f(x) := f(x+1)}. | 26430 | evaluated immediately to get the new rule @samp{f(x) := f(x+1)}. |
| 26430 | Or, use @kbd{s e} to enter the rule without going through the stack, | 26431 | Or, use @kbd{s e} to enter the rule without going through the stack, |
| 26431 | or enter the rule as @samp{apply(f, [x]) := apply(f, [x+1]) @w{:: 1}}. | 26432 | or enter the rule as @samp{apply(f, [x]) := apply(f, [x+1]) @w{:: 1}}. |
| @@ -27160,7 +27161,7 @@ To apply these manually, you could put them in a variable called | |||
| 27160 | to expand trig functions. But if instead you store them in the | 27161 | to expand trig functions. But if instead you store them in the |
| 27161 | variable @code{EvalRules}, they will automatically be applied to all | 27162 | variable @code{EvalRules}, they will automatically be applied to all |
| 27162 | sines and cosines of sums. Then, with @samp{2 x} and @samp{45} on | 27163 | sines and cosines of sums. Then, with @samp{2 x} and @samp{45} on |
| 27163 | the stack, typing @kbd{+ S} will (assuming degrees mode) result in | 27164 | the stack, typing @kbd{+ S} will (assuming Degrees mode) result in |
| 27164 | @samp{0.7071 sin(2 x) + 0.7071 cos(2 x)} automatically. | 27165 | @samp{0.7071 sin(2 x) + 0.7071 cos(2 x)} automatically. |
| 27165 | 27166 | ||
| 27166 | As each level of a formula is evaluated, the rules from | 27167 | As each level of a formula is evaluated, the rules from |
| @@ -27236,11 +27237,11 @@ number @expr{(2, 3)}, Calc computes @samp{sqrt(2*2 + 3*3)} by calling | |||
| 27236 | the multiplication, addition, and square root functions directly rather | 27237 | the multiplication, addition, and square root functions directly rather |
| 27237 | than applying the default simplifications to this formula. So an | 27238 | than applying the default simplifications to this formula. So an |
| 27238 | @code{EvalRules} rule that (perversely) rewrites @samp{sqrt(13) := 6} | 27239 | @code{EvalRules} rule that (perversely) rewrites @samp{sqrt(13) := 6} |
| 27239 | would not apply. (However, if you put Calc into symbolic mode so that | 27240 | would not apply. (However, if you put Calc into Symbolic mode so that |
| 27240 | @samp{sqrt(13)} will be left in symbolic form by the built-in square | 27241 | @samp{sqrt(13)} will be left in symbolic form by the built-in square |
| 27241 | root function, your rule will be able to apply. But if the complex | 27242 | root function, your rule will be able to apply. But if the complex |
| 27242 | number were @expr{(3,4)}, so that @samp{sqrt(25)} must be calculated, | 27243 | number were @expr{(3,4)}, so that @samp{sqrt(25)} must be calculated, |
| 27243 | then symbolic mode will not help because @samp{sqrt(25)} can be | 27244 | then Symbolic mode will not help because @samp{sqrt(25)} can be |
| 27244 | evaluated exactly to 5.) | 27245 | evaluated exactly to 5.) |
| 27245 | 27246 | ||
| 27246 | One subtle restriction that normally only manifests itself with | 27247 | One subtle restriction that normally only manifests itself with |
| @@ -27347,7 +27348,7 @@ A surprisingly useful rewrite rule is @samp{a/(b-c) := a*(b+c)/(b^2-c^2)}. | |||
| 27347 | This will simplify the formula whenever @expr{b} and/or @expr{c} can | 27348 | This will simplify the formula whenever @expr{b} and/or @expr{c} can |
| 27348 | be made simpler by squaring. For example, applying this rule to | 27349 | be made simpler by squaring. For example, applying this rule to |
| 27349 | @samp{2 / (sqrt(2) + 3)} yields @samp{6:7 - 2:7 sqrt(2)} (assuming | 27350 | @samp{2 / (sqrt(2) + 3)} yields @samp{6:7 - 2:7 sqrt(2)} (assuming |
| 27350 | Symbolic Mode has been enabled to keep the square root from being | 27351 | Symbolic mode has been enabled to keep the square root from being |
| 27351 | evaluated to a floating-point approximation). This rule is also | 27352 | evaluated to a floating-point approximation). This rule is also |
| 27352 | useful when working with symbolic complex numbers, e.g., | 27353 | useful when working with symbolic complex numbers, e.g., |
| 27353 | @samp{(a + b i) / (c + d i)}. | 27354 | @samp{(a + b i) / (c + d i)}. |
| @@ -27457,7 +27458,7 @@ formula @samp{1 mm} is ``simplified'' to @samp{mm}. This is only a | |||
| 27457 | display anomaly, however; @samp{mm} will work just fine as a | 27458 | display anomaly, however; @samp{mm} will work just fine as a |
| 27458 | representation of one millimeter. | 27459 | representation of one millimeter. |
| 27459 | 27460 | ||
| 27460 | You may find that Algebraic Mode (@pxref{Algebraic Entry}) makes working | 27461 | You may find that Algebraic mode (@pxref{Algebraic Entry}) makes working |
| 27461 | with units expressions easier. Otherwise, you will have to remember | 27462 | with units expressions easier. Otherwise, you will have to remember |
| 27462 | to hit the apostrophe key every time you wish to enter units. | 27463 | to hit the apostrophe key every time you wish to enter units. |
| 27463 | 27464 | ||
| @@ -28346,11 +28347,11 @@ including the current simplification mode. Recall that the | |||
| 28346 | formula @samp{x + y + x} is not handled by Calc's default | 28347 | formula @samp{x + y + x} is not handled by Calc's default |
| 28347 | simplifications, but the @kbd{a s} command will reduce it to | 28348 | simplifications, but the @kbd{a s} command will reduce it to |
| 28348 | the simpler form @samp{y + 2 x}. You can also type @kbd{m A} | 28349 | the simpler form @samp{y + 2 x}. You can also type @kbd{m A} |
| 28349 | to enable an algebraic-simplification mode in which the | 28350 | to enable an Algebraic Simplification mode in which the |
| 28350 | equivalent of @kbd{a s} is used on all of Calc's results. | 28351 | equivalent of @kbd{a s} is used on all of Calc's results. |
| 28351 | If you enter @samp{x + y + x =>} normally, the result will | 28352 | If you enter @samp{x + y + x =>} normally, the result will |
| 28352 | be @samp{x + y + x => x + y + x}. If you change to | 28353 | be @samp{x + y + x => x + y + x}. If you change to |
| 28353 | algebraic-simplification mode, the result will be | 28354 | Algebraic Simplification mode, the result will be |
| 28354 | @samp{x + y + x => y + 2 x}. However, just pressing @kbd{a s} | 28355 | @samp{x + y + x => y + 2 x}. However, just pressing @kbd{a s} |
| 28355 | once will have no effect on @samp{x + y + x => x + y + x}, | 28356 | once will have no effect on @samp{x + y + x => x + y + x}, |
| 28356 | because the righthand side depends only on the lefthand side | 28357 | because the righthand side depends only on the lefthand side |
| @@ -28389,13 +28390,13 @@ side effects. | |||
| 28389 | @pindex calc-assign | 28390 | @pindex calc-assign |
| 28390 | @tindex assign | 28391 | @tindex assign |
| 28391 | @tindex := | 28392 | @tindex := |
| 28392 | Embedded Mode also uses @samp{=>} operators. In embedded mode, | 28393 | Embedded mode also uses @samp{=>} operators. In Embedded mode, |
| 28393 | the lefthand side of an @samp{=>} operator can refer to variables | 28394 | the lefthand side of an @samp{=>} operator can refer to variables |
| 28394 | assigned elsewhere in the file by @samp{:=} operators. The | 28395 | assigned elsewhere in the file by @samp{:=} operators. The |
| 28395 | assignment operator @samp{a := 17} does not actually do anything | 28396 | assignment operator @samp{a := 17} does not actually do anything |
| 28396 | by itself. But Embedded Mode recognizes it and marks it as a sort | 28397 | by itself. But Embedded mode recognizes it and marks it as a sort |
| 28397 | of file-local definition of the variable. You can enter @samp{:=} | 28398 | of file-local definition of the variable. You can enter @samp{:=} |
| 28398 | operators in algebraic mode, or by using the @kbd{s :} | 28399 | operators in Algebraic mode, or by using the @kbd{s :} |
| 28399 | (@code{calc-assign}) [@code{assign}] command which takes a variable | 28400 | (@code{calc-assign}) [@code{assign}] command which takes a variable |
| 28400 | and value from the stack and replaces them with an assignment. | 28401 | and value from the stack and replaces them with an assignment. |
| 28401 | 28402 | ||
| @@ -29096,7 +29097,7 @@ killing GNUPLOT because you think it has gotten stuck. | |||
| 29096 | The commands in this chapter move information between the Calculator and | 29097 | The commands in this chapter move information between the Calculator and |
| 29097 | other Emacs editing buffers. | 29098 | other Emacs editing buffers. |
| 29098 | 29099 | ||
| 29099 | In many cases Embedded Mode is an easier and more natural way to | 29100 | In many cases Embedded mode is an easier and more natural way to |
| 29100 | work with Calc from a regular editing buffer. @xref{Embedded Mode}. | 29101 | work with Calc from a regular editing buffer. @xref{Embedded Mode}. |
| 29101 | 29102 | ||
| 29102 | @menu | 29103 | @menu |
| @@ -29367,7 +29368,7 @@ just by double-clicking on it in the shell, then middle-clicking | |||
| 29367 | in the Calc window. | 29368 | in the Calc window. |
| 29368 | 29369 | ||
| 29369 | @node Keypad Mode, Embedded Mode, Kill and Yank, Introduction | 29370 | @node Keypad Mode, Embedded Mode, Kill and Yank, Introduction |
| 29370 | @chapter ``Keypad'' Mode | 29371 | @chapter Keypad Mode |
| 29371 | 29372 | ||
| 29372 | @noindent | 29373 | @noindent |
| 29373 | @kindex M-# k | 29374 | @kindex M-# k |
| @@ -29376,7 +29377,7 @@ The @kbd{M-# k} (@code{calc-keypad}) command starts the Calculator | |||
| 29376 | and displays a picture of a calculator-style keypad. If you are using | 29377 | and displays a picture of a calculator-style keypad. If you are using |
| 29377 | the X window system, you can click on any of the ``keys'' in the | 29378 | the X window system, you can click on any of the ``keys'' in the |
| 29378 | keypad using the left mouse button to operate the calculator. | 29379 | keypad using the left mouse button to operate the calculator. |
| 29379 | The original window remains the selected window; in keypad mode | 29380 | The original window remains the selected window; in Keypad mode |
| 29380 | you can type in your file while simultaneously performing | 29381 | you can type in your file while simultaneously performing |
| 29381 | calculations with the mouse. | 29382 | calculations with the mouse. |
| 29382 | 29383 | ||
| @@ -29392,11 +29393,11 @@ the @samp{*Calc Keypad*} window, place the cursor on the desired | |||
| 29392 | ``key,'' and type @key{SPC} or @key{RET}. If you think this | 29393 | ``key,'' and type @key{SPC} or @key{RET}. If you think this |
| 29393 | is easier than using Calc normally, go right ahead. | 29394 | is easier than using Calc normally, go right ahead. |
| 29394 | 29395 | ||
| 29395 | Calc commands are more or less the same in keypad mode. Certain | 29396 | Calc commands are more or less the same in Keypad mode. Certain |
| 29396 | keypad keys differ slightly from the corresponding normal Calc | 29397 | keypad keys differ slightly from the corresponding normal Calc |
| 29397 | keystrokes; all such deviations are described below. | 29398 | keystrokes; all such deviations are described below. |
| 29398 | 29399 | ||
| 29399 | Keypad Mode includes many more commands than will fit on the keypad | 29400 | Keypad mode includes many more commands than will fit on the keypad |
| 29400 | at once. Click the right mouse button [@code{calc-keypad-menu}] | 29401 | at once. Click the right mouse button [@code{calc-keypad-menu}] |
| 29401 | to switch to the next menu. The bottom five rows of the keypad | 29402 | to switch to the next menu. The bottom five rows of the keypad |
| 29402 | stay the same; the top three rows change to a new set of commands. | 29403 | stay the same; the top three rows change to a new set of commands. |
| @@ -29444,7 +29445,7 @@ original buffer. | |||
| 29444 | @end smallexample | 29445 | @end smallexample |
| 29445 | 29446 | ||
| 29446 | @noindent | 29447 | @noindent |
| 29447 | This is the menu that appears the first time you start Keypad Mode. | 29448 | This is the menu that appears the first time you start Keypad mode. |
| 29448 | It will show up in a vertical window on the right side of your screen. | 29449 | It will show up in a vertical window on the right side of your screen. |
| 29449 | Above this menu is the traditional Calc stack display. On a 24-line | 29450 | Above this menu is the traditional Calc stack display. On a 24-line |
| 29450 | screen you will be able to see the top three stack entries. | 29451 | screen you will be able to see the top three stack entries. |
| @@ -29461,7 +29462,7 @@ At other times it changes the sign of the number on the top of the | |||
| 29461 | stack. | 29462 | stack. |
| 29462 | 29463 | ||
| 29463 | The @key{INV} and @key{HYP} keys modify other keys. As well as | 29464 | The @key{INV} and @key{HYP} keys modify other keys. As well as |
| 29464 | having the effects described elsewhere in this manual, Keypad Mode | 29465 | having the effects described elsewhere in this manual, Keypad mode |
| 29465 | defines several other ``inverse'' operations. These are described | 29466 | defines several other ``inverse'' operations. These are described |
| 29466 | below and in the following sections. | 29467 | below and in the following sections. |
| 29467 | 29468 | ||
| @@ -29481,7 +29482,7 @@ The @key{EXEC} key prompts you to enter any keystroke sequence | |||
| 29481 | that would normally work in Calc mode. This can include a | 29482 | that would normally work in Calc mode. This can include a |
| 29482 | numeric prefix if you wish. It is also possible simply to | 29483 | numeric prefix if you wish. It is also possible simply to |
| 29483 | switch into the Calc window and type commands in it; there is | 29484 | switch into the Calc window and type commands in it; there is |
| 29484 | nothing ``magic'' about this window when Keypad Mode is active. | 29485 | nothing ``magic'' about this window when Keypad mode is active. |
| 29485 | 29486 | ||
| 29486 | The other keys in this display perform their obvious calculator | 29487 | The other keys in this display perform their obvious calculator |
| 29487 | functions. @key{CLN2} rounds the top-of-stack by temporarily | 29488 | functions. @key{CLN2} rounds the top-of-stack by temporarily |
| @@ -29760,16 +29761,16 @@ The @key{OVER} key duplicates the second-to-top stack element. | |||
| 29760 | The @key{STO} and @key{RCL} keys are analogous to @kbd{s t} and | 29761 | The @key{STO} and @key{RCL} keys are analogous to @kbd{s t} and |
| 29761 | @kbd{s r} in regular Calc. @xref{Store and Recall}. Click the | 29762 | @kbd{s r} in regular Calc. @xref{Store and Recall}. Click the |
| 29762 | @key{STO} or @key{RCL} key, then one of the ten digits. (Named | 29763 | @key{STO} or @key{RCL} key, then one of the ten digits. (Named |
| 29763 | variables are not available in Keypad Mode.) You can also use, | 29764 | variables are not available in Keypad mode.) You can also use, |
| 29764 | for example, @kbd{STO + 3} to add to register 3. | 29765 | for example, @kbd{STO + 3} to add to register 3. |
| 29765 | 29766 | ||
| 29766 | @node Embedded Mode, Programming, Keypad Mode, Top | 29767 | @node Embedded Mode, Programming, Keypad Mode, Top |
| 29767 | @chapter Embedded Mode | 29768 | @chapter Embedded Mode |
| 29768 | 29769 | ||
| 29769 | @noindent | 29770 | @noindent |
| 29770 | Embedded Mode in Calc provides an alternative to copying numbers | 29771 | Embedded mode in Calc provides an alternative to copying numbers |
| 29771 | and formulas back and forth between editing buffers and the Calc | 29772 | and formulas back and forth between editing buffers and the Calc |
| 29772 | stack. In Embedded Mode, your editing buffer becomes temporarily | 29773 | stack. In Embedded mode, your editing buffer becomes temporarily |
| 29773 | linked to the stack and this copying is taken care of automatically. | 29774 | linked to the stack and this copying is taken care of automatically. |
| 29774 | 29775 | ||
| 29775 | @menu | 29776 | @menu |
| @@ -29794,7 +29795,7 @@ are visiting your own files. | |||
| 29794 | 29795 | ||
| 29795 | Calc normally scans backward and forward in the buffer for the | 29796 | Calc normally scans backward and forward in the buffer for the |
| 29796 | nearest opening and closing @dfn{formula delimiters}. The simplest | 29797 | nearest opening and closing @dfn{formula delimiters}. The simplest |
| 29797 | delimiters are blank lines. Other delimiters that Embedded Mode | 29798 | delimiters are blank lines. Other delimiters that Embedded mode |
| 29798 | understands are: | 29799 | understands are: |
| 29799 | 29800 | ||
| 29800 | @enumerate | 29801 | @enumerate |
| @@ -30352,15 +30353,15 @@ use @kbd{M-# u} to update the buffer by hand. | |||
| 30352 | @section Mode Settings in Embedded Mode | 30353 | @section Mode Settings in Embedded Mode |
| 30353 | 30354 | ||
| 30354 | @noindent | 30355 | @noindent |
| 30355 | Embedded Mode has a rather complicated mechanism for handling mode | 30356 | Embedded mode has a rather complicated mechanism for handling mode |
| 30356 | settings in Embedded formulas. It is possible to put annotations | 30357 | settings in Embedded formulas. It is possible to put annotations |
| 30357 | in the file that specify mode settings either global to the entire | 30358 | in the file that specify mode settings either global to the entire |
| 30358 | file or local to a particular formula or formulas. In the latter | 30359 | file or local to a particular formula or formulas. In the latter |
| 30359 | case, different modes can be specified for use when a formula | 30360 | case, different modes can be specified for use when a formula |
| 30360 | is the enabled Embedded Mode formula. | 30361 | is the enabled Embedded mode formula. |
| 30361 | 30362 | ||
| 30362 | When you give any mode-setting command, like @kbd{m f} (for fraction | 30363 | When you give any mode-setting command, like @kbd{m f} (for Fraction |
| 30363 | mode) or @kbd{d s} (for scientific notation), Embedded Mode adds | 30364 | mode) or @kbd{d s} (for scientific notation), Embedded mode adds |
| 30364 | a line like the following one to the file just before the opening | 30365 | a line like the following one to the file just before the opening |
| 30365 | delimiter of the formula. | 30366 | delimiter of the formula. |
| 30366 | 30367 | ||
| @@ -30413,7 +30414,7 @@ sure the value is of a legal type or range; if you write an | |||
| 30413 | annotation by hand, be sure to give a proper value or results | 30414 | annotation by hand, be sure to give a proper value or results |
| 30414 | will be unpredictable. Mode-setting annotations are case-sensitive. | 30415 | will be unpredictable. Mode-setting annotations are case-sensitive. |
| 30415 | 30416 | ||
| 30416 | While Embedded Mode is enabled, the word @code{Local} appears in | 30417 | While Embedded mode is enabled, the word @code{Local} appears in |
| 30417 | the mode line. This is to show that mode setting commands generate | 30418 | the mode line. This is to show that mode setting commands generate |
| 30418 | annotations that are ``local'' to the current formula or set of | 30419 | annotations that are ``local'' to the current formula or set of |
| 30419 | formulas. The @kbd{m R} (@code{calc-mode-record-mode}) command | 30420 | formulas. The @kbd{m R} (@code{calc-mode-record-mode}) command |
| @@ -30429,7 +30430,7 @@ that look like this, respectively: | |||
| 30429 | @end example | 30430 | @end example |
| 30430 | 30431 | ||
| 30431 | The first kind of annotation will be used only while a formula | 30432 | The first kind of annotation will be used only while a formula |
| 30432 | is enabled in Embedded Mode. The second kind will be used only | 30433 | is enabled in Embedded mode. The second kind will be used only |
| 30433 | when the formula is @emph{not} enabled. (Whether the formula | 30434 | when the formula is @emph{not} enabled. (Whether the formula |
| 30434 | is ``active'' or not, i.e., whether Calc has seen this formula | 30435 | is ``active'' or not, i.e., whether Calc has seen this formula |
| 30435 | yet, is not relevant here.) | 30436 | yet, is not relevant here.) |
| @@ -30471,21 +30472,21 @@ We would have to go down to the other formula and press @kbd{M-# u} | |||
| 30471 | on it in order to get it to notice the new annotation. | 30472 | on it in order to get it to notice the new annotation. |
| 30472 | 30473 | ||
| 30473 | Two more mode-recording modes selectable by @kbd{m R} are @code{Save} | 30474 | Two more mode-recording modes selectable by @kbd{m R} are @code{Save} |
| 30474 | (which works even outside of Embedded Mode), in which mode settings | 30475 | (which works even outside of Embedded mode), in which mode settings |
| 30475 | are recorded permanently in your Emacs startup file @file{~/.emacs} | 30476 | are recorded permanently in your Emacs startup file @file{~/.emacs} |
| 30476 | rather than by annotating the current document, and no-recording | 30477 | rather than by annotating the current document, and no-recording |
| 30477 | mode (where there is no symbol like @code{Save} or @code{Local} in | 30478 | mode (where there is no symbol like @code{Save} or @code{Local} in |
| 30478 | the mode line), in which mode-changing commands do not leave any | 30479 | the mode line), in which mode-changing commands do not leave any |
| 30479 | annotations at all. | 30480 | annotations at all. |
| 30480 | 30481 | ||
| 30481 | When Embedded Mode is not enabled, mode-recording modes except | 30482 | When Embedded mode is not enabled, mode-recording modes except |
| 30482 | for @code{Save} have no effect. | 30483 | for @code{Save} have no effect. |
| 30483 | 30484 | ||
| 30484 | @node Customizing Embedded Mode, , Mode Settings in Embedded Mode, Embedded Mode | 30485 | @node Customizing Embedded Mode, , Mode Settings in Embedded Mode, Embedded Mode |
| 30485 | @section Customizing Embedded Mode | 30486 | @section Customizing Embedded Mode |
| 30486 | 30487 | ||
| 30487 | @noindent | 30488 | @noindent |
| 30488 | You can modify Embedded Mode's behavior by setting various Lisp | 30489 | You can modify Embedded mode's behavior by setting various Lisp |
| 30489 | variables described here. Use @kbd{M-x set-variable} or | 30490 | variables described here. Use @kbd{M-x set-variable} or |
| 30490 | @kbd{M-x edit-options} to adjust a variable on the fly, or | 30491 | @kbd{M-x edit-options} to adjust a variable on the fly, or |
| 30491 | put a suitable @code{setq} statement in your @file{~/.emacs} | 30492 | put a suitable @code{setq} statement in your @file{~/.emacs} |
| @@ -30495,7 +30496,7 @@ file; @pxref{File Variables, , Local Variables in Files, emacs, the | |||
| 30495 | Emacs manual}.) | 30496 | Emacs manual}.) |
| 30496 | 30497 | ||
| 30497 | While none of these variables will be buffer-local by default, you | 30498 | While none of these variables will be buffer-local by default, you |
| 30498 | can make any of them local to any embedded-mode buffer. (Their | 30499 | can make any of them local to any Embedded mode buffer. (Their |
| 30499 | values in the @samp{*Calculator*} buffer are never used.) | 30500 | values in the @samp{*Calculator*} buffer are never used.) |
| 30500 | 30501 | ||
| 30501 | @vindex calc-embedded-open-formula | 30502 | @vindex calc-embedded-open-formula |
| @@ -30584,7 +30585,7 @@ The default string is @code{"%%% "} (note the trailing space). | |||
| 30584 | @vindex calc-embedded-close-plain | 30585 | @vindex calc-embedded-close-plain |
| 30585 | The @code{calc-embedded-close-plain} variable is a string which | 30586 | The @code{calc-embedded-close-plain} variable is a string which |
| 30586 | ends a ``plain'' formula. The default is @code{" %%%\n"}. Without | 30587 | ends a ``plain'' formula. The default is @code{" %%%\n"}. Without |
| 30587 | the trailing newline here, the first line of a ``big'' mode formula | 30588 | the trailing newline here, the first line of a Big mode formula |
| 30588 | that followed might be shifted over with respect to the other lines. | 30589 | that followed might be shifted over with respect to the other lines. |
| 30589 | 30590 | ||
| 30590 | @vindex calc-embedded-open-new-formula | 30591 | @vindex calc-embedded-open-new-formula |
| @@ -31045,7 +31046,7 @@ conditional and looping commands. | |||
| 31045 | @cindex Restoring saved modes | 31046 | @cindex Restoring saved modes |
| 31046 | Keyboard macros sometimes want to operate under known conditions | 31047 | Keyboard macros sometimes want to operate under known conditions |
| 31047 | without affecting surrounding conditions. For example, a keyboard | 31048 | without affecting surrounding conditions. For example, a keyboard |
| 31048 | macro may wish to turn on Fraction Mode, or set a particular | 31049 | macro may wish to turn on Fraction mode, or set a particular |
| 31049 | precision, independent of the user's normal setting for those | 31050 | precision, independent of the user's normal setting for those |
| 31050 | modes. | 31051 | modes. |
| 31051 | 31052 | ||
| @@ -31094,7 +31095,7 @@ for all mode-setting commands inside the macro. | |||
| 31094 | In fact, @kbd{C-u Z `} is like @kbd{Z `} except that it sets the modes | 31095 | In fact, @kbd{C-u Z `} is like @kbd{Z `} except that it sets the modes |
| 31095 | listed above to their default values. As usual, the matching @kbd{Z '} | 31096 | listed above to their default values. As usual, the matching @kbd{Z '} |
| 31096 | will restore the modes to their settings from before the @kbd{C-u Z `}. | 31097 | will restore the modes to their settings from before the @kbd{C-u Z `}. |
| 31097 | Also, @w{@kbd{Z `}} with a negative prefix argument resets algebraic mode | 31098 | Also, @w{@kbd{Z `}} with a negative prefix argument resets the algebraic mode |
| 31098 | to its default (off) but leaves the other modes the same as they were | 31099 | to its default (off) but leaves the other modes the same as they were |
| 31099 | outside the construct. | 31100 | outside the construct. |
| 31100 | 31101 | ||
| @@ -32166,7 +32167,7 @@ If the first argument to @code{calc-eval} is a list whose first | |||
| 32166 | element is a formula string, then @code{calc-eval} sets all the | 32167 | element is a formula string, then @code{calc-eval} sets all the |
| 32167 | various Calc modes to their default values while the formula is | 32168 | various Calc modes to their default values while the formula is |
| 32168 | evaluated and formatted. For example, the precision is set to 12 | 32169 | evaluated and formatted. For example, the precision is set to 12 |
| 32169 | digits, digit grouping is turned off, and the normal language | 32170 | digits, digit grouping is turned off, and the Normal language |
| 32170 | mode is used. | 32171 | mode is used. |
| 32171 | 32172 | ||
| 32172 | This same principle applies to the other options discussed below. | 32173 | This same principle applies to the other options discussed below. |
| @@ -32189,7 +32190,7 @@ It's usually best to use this form of @code{calc-eval} unless your | |||
| 32189 | program actually considers the interaction with Calc's mode settings | 32190 | program actually considers the interaction with Calc's mode settings |
| 32190 | to be a feature. This will avoid all sorts of potential ``gotchas''; | 32191 | to be a feature. This will avoid all sorts of potential ``gotchas''; |
| 32191 | consider what happens with @samp{(calc-eval "sqrt(2)" 'num)} | 32192 | consider what happens with @samp{(calc-eval "sqrt(2)" 'num)} |
| 32192 | when the user has left Calc in symbolic mode or no-simplify mode. | 32193 | when the user has left Calc in Symbolic mode or No-Simplify mode. |
| 32193 | 32194 | ||
| 32194 | As another example, @samp{(equal (calc-eval '("$<$$") nil a b) "1")} | 32195 | As another example, @samp{(equal (calc-eval '("$<$$") nil a b) "1")} |
| 32195 | checks if the number in string @expr{a} is less than the one in | 32196 | checks if the number in string @expr{a} is less than the one in |
| @@ -32765,7 +32766,7 @@ will be used. | |||
| 32765 | This function takes a Calc object and ``normalizes'' it. At the very | 32766 | This function takes a Calc object and ``normalizes'' it. At the very |
| 32766 | least this involves re-rounding floating-point values according to the | 32767 | least this involves re-rounding floating-point values according to the |
| 32767 | current precision and other similar jobs. Also, unless the user has | 32768 | current precision and other similar jobs. Also, unless the user has |
| 32768 | selected no-simplify mode (@pxref{Simplification Modes}), this involves | 32769 | selected No-Simplify mode (@pxref{Simplification Modes}), this involves |
| 32769 | actually evaluating a formula object by executing the function calls | 32770 | actually evaluating a formula object by executing the function calls |
| 32770 | it contains, and possibly also doing algebraic simplification, etc. | 32771 | it contains, and possibly also doing algebraic simplification, etc. |
| 32771 | @end defun | 32772 | @end defun |
| @@ -33127,13 +33128,13 @@ function call which led here will be left in symbolic form. | |||
| 33127 | @end defun | 33128 | @end defun |
| 33128 | 33129 | ||
| 33129 | @defun inexact-value | 33130 | @defun inexact-value |
| 33130 | If Symbolic Mode is enabled, this will signal an error that causes | 33131 | If Symbolic mode is enabled, this will signal an error that causes |
| 33131 | @code{normalize} to leave the formula in symbolic form, with the message | 33132 | @code{normalize} to leave the formula in symbolic form, with the message |
| 33132 | ``Inexact result.'' (This function has no effect when not in Symbolic Mode.) | 33133 | ``Inexact result.'' (This function has no effect when not in Symbolic mode.) |
| 33133 | Note that if your function calls @samp{(sin 5)} in Symbolic Mode, the | 33134 | Note that if your function calls @samp{(sin 5)} in Symbolic mode, the |
| 33134 | @code{sin} function will call @code{inexact-value}, which will cause your | 33135 | @code{sin} function will call @code{inexact-value}, which will cause your |
| 33135 | function to be left unsimplified. You may instead wish to call | 33136 | function to be left unsimplified. You may instead wish to call |
| 33136 | @samp{(normalize (list 'calcFunc-sin 5))}, which in Symbolic Mode will | 33137 | @samp{(normalize (list 'calcFunc-sin 5))}, which in Symbolic mode will |
| 33137 | return the formula @samp{sin(5)} to your function. | 33138 | return the formula @samp{sin(5)} to your function. |
| 33138 | @end defun | 33139 | @end defun |
| 33139 | 33140 | ||
| @@ -33179,9 +33180,9 @@ number of parameters, or because it returns @code{nil} or calls | |||
| 33179 | @code{reject-arg} or @code{inexact-result}, @code{normalize} returns | 33180 | @code{reject-arg} or @code{inexact-result}, @code{normalize} returns |
| 33180 | the formula still in symbolic form. | 33181 | the formula still in symbolic form. |
| 33181 | 33182 | ||
| 33182 | If the current Simplification Mode is ``none'' or ``numeric arguments | 33183 | If the current simplification mode is ``none'' or ``numeric arguments |
| 33183 | only,'' @code{normalize} will act appropriately. However, the more | 33184 | only,'' @code{normalize} will act appropriately. However, the more |
| 33184 | powerful simplification modes (like algebraic simplification) are | 33185 | powerful simplification modes (like Algebraic Simplification) are |
| 33185 | not handled by @code{normalize}. They are handled by @code{calc-normalize}, | 33186 | not handled by @code{normalize}. They are handled by @code{calc-normalize}, |
| 33186 | which calls @code{normalize} and possibly some other routines, such | 33187 | which calls @code{normalize} and possibly some other routines, such |
| 33187 | as @code{simplify} or @code{simplify-units}. Programs generally will | 33188 | as @code{simplify} or @code{simplify-units}. Programs generally will |
| @@ -33369,7 +33370,7 @@ again to 30 digits for use in the present request. | |||
| 33369 | If the current angular mode is Degrees or HMS, this function returns the | 33370 | If the current angular mode is Degrees or HMS, this function returns the |
| 33370 | integer 360. In Radians mode, this function returns either the | 33371 | integer 360. In Radians mode, this function returns either the |
| 33371 | corresponding value in radians to the current precision, or the formula | 33372 | corresponding value in radians to the current precision, or the formula |
| 33372 | @samp{2*pi}, depending on the Symbolic Mode. There are also similar | 33373 | @samp{2*pi}, depending on the Symbolic mode. There are also similar |
| 33373 | function @code{half-circle} and @code{quarter-circle}. | 33374 | function @code{half-circle} and @code{quarter-circle}. |
| 33374 | @end defun | 33375 | @end defun |
| 33375 | 33376 | ||
| @@ -33427,12 +33428,12 @@ If @var{a} is a formula, this returns the formula @samp{deg(@var{a})}. | |||
| 33427 | @end defun | 33428 | @end defun |
| 33428 | 33429 | ||
| 33429 | @defun to-radians-2 a | 33430 | @defun to-radians-2 a |
| 33430 | Like @code{to-radians}, except that in Symbolic Mode a degrees to | 33431 | Like @code{to-radians}, except that in Symbolic mode a degrees to |
| 33431 | radians conversion yields a formula like @samp{@var{a}*pi/180}. | 33432 | radians conversion yields a formula like @samp{@var{a}*pi/180}. |
| 33432 | @end defun | 33433 | @end defun |
| 33433 | 33434 | ||
| 33434 | @defun from-radians-2 a | 33435 | @defun from-radians-2 a |
| 33435 | Like @code{from-radians}, except that in Symbolic Mode a radians to | 33436 | Like @code{from-radians}, except that in Symbolic mode a radians to |
| 33436 | degrees conversion yields a formula like @samp{@var{a}*180/pi}. | 33437 | degrees conversion yields a formula like @samp{@var{a}*180/pi}. |
| 33437 | @end defun | 33438 | @end defun |
| 33438 | 33439 | ||
diff --git a/man/cc-mode.texi b/man/cc-mode.texi index 2c0933a5335..89e49d67442 100644 --- a/man/cc-mode.texi +++ b/man/cc-mode.texi | |||
| @@ -1420,7 +1420,7 @@ then as the comment prefix. It defaults to @samp{* | |||
| 1420 | @code{c-block-comment-prefix} typically gets overriden by the default | 1420 | @code{c-block-comment-prefix} typically gets overriden by the default |
| 1421 | style @code{gnu}, which sets it to blank. You can see the line | 1421 | style @code{gnu}, which sets it to blank. You can see the line |
| 1422 | splitting effect described here by setting a different style, | 1422 | splitting effect described here by setting a different style, |
| 1423 | e.g. @code{k&r} @xref{Choosing a Style}}, which makes a comment | 1423 | e.g. @code{k&r} @xref{Choosing a Style}.}, which makes a comment |
| 1424 | 1424 | ||
| 1425 | @example | 1425 | @example |
| 1426 | /* Got O(n^2) here, which is a Bad Thing. */ | 1426 | /* Got O(n^2) here, which is a Bad Thing. */ |
| @@ -1643,7 +1643,7 @@ trailing backslashes. | |||
| 1643 | @cindex font locking | 1643 | @cindex font locking |
| 1644 | @comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | 1644 | @comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
| 1645 | 1645 | ||
| 1646 | @strong{Note:} The font locking in AWK mode is currently not integrated | 1646 | @strong{Please note:} The font locking in AWK mode is currently not integrated |
| 1647 | with the rest of @ccmode{}, so this section does not apply there. | 1647 | with the rest of @ccmode{}, so this section does not apply there. |
| 1648 | @xref{AWK Mode Font Locking}, instead. | 1648 | @xref{AWK Mode Font Locking}, instead. |
| 1649 | 1649 | ||
diff --git a/man/mark.texi b/man/mark.texi index 4f1c8a6d4d9..c37bd7857e0 100644 --- a/man/mark.texi +++ b/man/mark.texi | |||
| @@ -191,7 +191,9 @@ You can activate the new region by executing @kbd{C-x C-x} | |||
| 191 | (@code{exchange-point-and-mark}). | 191 | (@code{exchange-point-and-mark}). |
| 192 | 192 | ||
| 193 | @item | 193 | @item |
| 194 | @kbd{C-s} when the mark is active does not alter the mark. | 194 | Commands that normally set the mark before moving long distances (like |
| 195 | @kbd{M-<} and @kbd{C-s}) do not alter the mark in Transient Mark mode | ||
| 196 | when the mark is active. | ||
| 195 | 197 | ||
| 196 | @item | 198 | @item |
| 197 | Some commands operate on the region if a region is active. For | 199 | Some commands operate on the region if a region is active. For |
| @@ -384,9 +386,10 @@ the same buffer. | |||
| 384 | Many commands that can move long distances, such as @kbd{M-<} | 386 | Many commands that can move long distances, such as @kbd{M-<} |
| 385 | (@code{beginning-of-buffer}), start by setting the mark and saving the | 387 | (@code{beginning-of-buffer}), start by setting the mark and saving the |
| 386 | old mark on the mark ring. This is to make it easier for you to move | 388 | old mark on the mark ring. This is to make it easier for you to move |
| 387 | back later. Searches set the mark if they move point. You can tell | 389 | back later. Searches set the mark if they move point. However, in |
| 388 | when a command sets the mark because it displays @samp{Mark set} in the | 390 | Transient Mark mode, these commands do not set the mark when the mark |
| 389 | echo area. | 391 | is already active. You can tell when a command sets the mark because |
| 392 | it displays @samp{Mark set} in the echo area. | ||
| 390 | 393 | ||
| 391 | If you want to move back to the same place over and over, the mark | 394 | If you want to move back to the same place over and over, the mark |
| 392 | ring may not be convenient enough. If so, you can record the position | 395 | ring may not be convenient enough. If so, you can record the position |
diff --git a/man/trampver.texi b/man/trampver.texi index 743b49388f7..45cbefb72ac 100644 --- a/man/trampver.texi +++ b/man/trampver.texi | |||
| @@ -4,7 +4,7 @@ | |||
| 4 | @c In the Tramp CVS, the version number is auto-frobbed from | 4 | @c In the Tramp CVS, the version number is auto-frobbed from |
| 5 | @c configure.ac, so you should edit that file and run | 5 | @c configure.ac, so you should edit that file and run |
| 6 | @c "autoconf && ./configure" to change the version number. | 6 | @c "autoconf && ./configure" to change the version number. |
| 7 | @set trampver 2.0.45 | 7 | @set trampver 2.0.46 |
| 8 | 8 | ||
| 9 | @c Other flags from configuration | 9 | @c Other flags from configuration |
| 10 | @set prefix /usr/local | 10 | @set prefix /usr/local |
diff --git a/man/url.texi b/man/url.texi index 5f36826d926..f5c15e2dff5 100644 --- a/man/url.texi +++ b/man/url.texi | |||
| @@ -27,7 +27,7 @@ Copyright (C) 1993, 1994, 1995, 1996 William M. Perry | |||
| 27 | Permission is granted to copy, distribute and/or modify this document | 27 | Permission is granted to copy, distribute and/or modify this document |
| 28 | under the terms of the GNU Free Documentation License, Version 1.1 or | 28 | under the terms of the GNU Free Documentation License, Version 1.1 or |
| 29 | any later version published by the Free Software Foundation; with the | 29 | any later version published by the Free Software Foundation; with the |
| 30 | Invariant Sections being | 30 | Invariant Sections being |
| 31 | ``GNU GENERAL PUBLIC LICENSE''. A copy of the | 31 | ``GNU GENERAL PUBLIC LICENSE''. A copy of the |
| 32 | license is included in the section entitled ``GNU Free Documentation | 32 | license is included in the section entitled ``GNU Free Documentation |
| 33 | License.'' | 33 | License.'' |
| @@ -74,9 +74,9 @@ License.'' | |||
| 74 | * General Facilities:: URLs can be cached, accessed via a gateway | 74 | * General Facilities:: URLs can be cached, accessed via a gateway |
| 75 | and tracked in a history list. | 75 | and tracked in a history list. |
| 76 | * Customization:: Variables you can alter. | 76 | * Customization:: Variables you can alter. |
| 77 | * Function Index:: | 77 | * Function Index:: |
| 78 | * Variable Index:: | 78 | * Variable Index:: |
| 79 | * Concept Index:: | 79 | * Concept Index:: |
| 80 | @end menu | 80 | @end menu |
| 81 | 81 | ||
| 82 | @node Getting Started | 82 | @node Getting Started |
| @@ -115,7 +115,7 @@ The meaning of | |||
| 115 | the @var{path} component depends on the service. | 115 | the @var{path} component depends on the service. |
| 116 | 116 | ||
| 117 | @menu | 117 | @menu |
| 118 | * Configuration:: | 118 | * Configuration:: |
| 119 | * Parsed URLs:: URLs are parsed into vector structures. | 119 | * Parsed URLs:: URLs are parsed into vector structures. |
| 120 | @end menu | 120 | @end menu |
| 121 | 121 | ||
| @@ -204,7 +204,7 @@ Recreates a URL string from the parsed @var{url}. | |||
| 204 | @defun url-retrieve-synchronously url | 204 | @defun url-retrieve-synchronously url |
| 205 | Retrieve @var{url} synchronously and return a buffer containing the | 205 | Retrieve @var{url} synchronously and return a buffer containing the |
| 206 | data. @var{url} is either a string or a parsed URL structure. Return | 206 | data. @var{url} is either a string or a parsed URL structure. Return |
| 207 | @var{nil} if there are no data associated with it (the case for dired, | 207 | @code{nil} if there are no data associated with it (the case for dired, |
| 208 | info, or mailto URLs that need no further processing). | 208 | info, or mailto URLs that need no further processing). |
| 209 | @end defun | 209 | @end defun |
| 210 | 210 | ||
| @@ -214,7 +214,7 @@ Retrieve @var{url} asynchronously and call @var{callback} with args | |||
| 214 | has been completely retrieved, with the current buffer containing the | 214 | has been completely retrieved, with the current buffer containing the |
| 215 | object and any MIME headers associated with it. @var{url} is either a | 215 | object and any MIME headers associated with it. @var{url} is either a |
| 216 | string or a parsed URL structure. Returns the buffer @var{url} will | 216 | string or a parsed URL structure. Returns the buffer @var{url} will |
| 217 | load into, or @var{nil} if the process has already completed. | 217 | load into, or @code{nil} if the process has already completed. |
| 218 | @end defun | 218 | @end defun |
| 219 | 219 | ||
| 220 | @node Supported URL Types | 220 | @node Supported URL Types |
| @@ -222,7 +222,7 @@ load into, or @var{nil} if the process has already completed. | |||
| 222 | 222 | ||
| 223 | @menu | 223 | @menu |
| 224 | * http/https:: Hypertext Transfer Protocol. | 224 | * http/https:: Hypertext Transfer Protocol. |
| 225 | * file/ftp:: Local files and FTP archives. | 225 | * file/ftp:: Local files and FTP archives. |
| 226 | * info:: Emacs `Info' pages. | 226 | * info:: Emacs `Info' pages. |
| 227 | * mailto:: Sending email. | 227 | * mailto:: Sending email. |
| 228 | * news/nntp/snews:: Usenet news. | 228 | * news/nntp/snews:: Usenet news. |
| @@ -235,7 +235,7 @@ load into, or @var{nil} if the process has already completed. | |||
| 235 | @c * netrek:: | 235 | @c * netrek:: |
| 236 | @c * prospero:: | 236 | @c * prospero:: |
| 237 | * cid:: Content-ID. | 237 | * cid:: Content-ID. |
| 238 | * about:: | 238 | * about:: |
| 239 | * ldap:: Lightweight Directory Access Protocol | 239 | * ldap:: Lightweight Directory Access Protocol |
| 240 | * imap:: IMAP mailboxes. | 240 | * imap:: IMAP mailboxes. |
| 241 | * man:: Unix man pages. | 241 | * man:: Unix man pages. |
| @@ -273,10 +273,10 @@ otherwise the user will be asked on each request. | |||
| 273 | 273 | ||
| 274 | 274 | ||
| 275 | @menu | 275 | @menu |
| 276 | * Cookies:: | 276 | * Cookies:: |
| 277 | * HTTP language/coding:: | 277 | * HTTP language/coding:: |
| 278 | * HTTP URL Options:: | 278 | * HTTP URL Options:: |
| 279 | * Dealing with HTTP documents:: | 279 | * Dealing with HTTP documents:: |
| 280 | @end menu | 280 | @end menu |
| 281 | 281 | ||
| 282 | @node Cookies | 282 | @node Cookies |
| @@ -330,7 +330,7 @@ preferred character set encodings, e.g.@: Latin-9 or Big5, and these | |||
| 330 | can be weighted. In Emacs 21 this list is generated automatically | 330 | can be weighted. In Emacs 21 this list is generated automatically |
| 331 | from the list of defined coding systems which have associated MIME | 331 | from the list of defined coding systems which have associated MIME |
| 332 | types. These are sorted by coding priority. @xref{Recognize Coding, | 332 | types. These are sorted by coding priority. @xref{Recognize Coding, |
| 333 | , Recognizing Coding Systems, emacs, GNU Emacs Manual}. | 333 | , Recognizing Coding Systems, emacs, The GNU Emacs Manual}. |
| 334 | @end defopt | 334 | @end defopt |
| 335 | 335 | ||
| 336 | @defopt url-mime-language-string | 336 | @defopt url-mime-language-string |
| @@ -384,9 +384,9 @@ Currently this is just the raw header contents. | |||
| 384 | 384 | ||
| 385 | HTTP URLs are retrieved into a buffer containing the HTTP headers | 385 | HTTP URLs are retrieved into a buffer containing the HTTP headers |
| 386 | followed by the body. Since the headers are quasi-MIME, they may be | 386 | followed by the body. Since the headers are quasi-MIME, they may be |
| 387 | processed using the MIME library. @inforef{Top, The MIME library, | 387 | processed using the MIME library. @xref{Top,, Emacs MIME, |
| 388 | emacs-mime}. The URL package provides a function to do this in | 388 | emacs-mime, The Emacs MIME Manual}. The URL package provides a |
| 389 | general: | 389 | function to do this in general: |
| 390 | 390 | ||
| 391 | @defun url-decode-text-part handle &optional coding | 391 | @defun url-decode-text-part handle &optional coding |
| 392 | This function decodes charset-encoded text in the current buffer. In | 392 | This function decodes charset-encoded text in the current buffer. In |
| @@ -414,8 +414,8 @@ file://@var{user}:@var{password}@@@var{host}:@var{port}/@var{file} | |||
| 414 | @end example | 414 | @end example |
| 415 | 415 | ||
| 416 | These schemes are defined in RFC 1808. | 416 | These schemes are defined in RFC 1808. |
| 417 | @samp{ftp:} and @samp{file:} are synonomous in this library. They | 417 | @samp{ftp:} and @samp{file:} are synonymous in this library. They |
| 418 | allow reading arbitary files from hosts. Either @samp{ange-ftp} | 418 | allow reading arbitrary files from hosts. Either @samp{ange-ftp} |
| 419 | (Emacs) or @samp{efs} (XEmacs) is used to retrieve them from remote | 419 | (Emacs) or @samp{efs} (XEmacs) is used to retrieve them from remote |
| 420 | hosts. Local files are accessed directly. | 420 | hosts. Local files are accessed directly. |
| 421 | 421 | ||
| @@ -451,13 +451,13 @@ Info URLs are not officially defined. They invoke | |||
| 451 | @cindex email | 451 | @cindex email |
| 452 | A mailto URL will send an email message to the address in the | 452 | A mailto URL will send an email message to the address in the |
| 453 | URL, for example @samp{mailto:foo@@bar.com} would compose a | 453 | URL, for example @samp{mailto:foo@@bar.com} would compose a |
| 454 | message to @samp{foo@@bar.com}. | 454 | message to @samp{foo@@bar.com}. |
| 455 | 455 | ||
| 456 | @defopt url-mail-command | 456 | @defopt url-mail-command |
| 457 | @vindex mail-user-agent | 457 | @vindex mail-user-agent |
| 458 | The function called whenever url needs to send mail. This should | 458 | The function called whenever url needs to send mail. This should |
| 459 | normally be left to default from @var{mail-user-agent}. @xref{Mail | 459 | normally be left to default from @var{mail-user-agent}. @xref{Mail |
| 460 | Methods, , Mail-Composition Methods, emacs, GNU Emacs Manual}. | 460 | Methods, , Mail-Composition Methods, emacs, The GNU Emacs Manual}. |
| 461 | @end defopt | 461 | @end defopt |
| 462 | 462 | ||
| 463 | An @samp{X-Url-From} header field containing the URL of the document | 463 | An @samp{X-Url-From} header field containing the URL of the document |
| @@ -468,7 +468,7 @@ The form of a mailto URL is | |||
| 468 | @example | 468 | @example |
| 469 | @samp{mailto:@var{mailbox}[?@var{header}=@var{contents}[&@var{header}=@var{contents}]]} | 469 | @samp{mailto:@var{mailbox}[?@var{header}=@var{contents}[&@var{header}=@var{contents}]]} |
| 470 | @end example | 470 | @end example |
| 471 | @noindent where an arbitary number of @var{header}s can be added. If the | 471 | @noindent where an arbitrary number of @var{header}s can be added. If the |
| 472 | @var{header} is @samp{body}, then @var{contents} is put in the body | 472 | @var{header} is @samp{body}, then @var{contents} is put in the body |
| 473 | otherwise a @var{header} header field is created with @var{contents} | 473 | otherwise a @var{header} header field is created with @var{contents} |
| 474 | as its contents. Note that the URL library does not consider any | 474 | as its contents. Note that the URL library does not consider any |
| @@ -493,11 +493,11 @@ fields may be included in news URLs though they are properly only | |||
| 493 | allowed for nntp an snews. | 493 | allowed for nntp an snews. |
| 494 | 494 | ||
| 495 | @table @samp | 495 | @table @samp |
| 496 | @item news:@var{newsgroup} | 496 | @item news:@var{newsgroup} |
| 497 | Retrieves a list of messages in @var{newsgroup}; | 497 | Retrieves a list of messages in @var{newsgroup}; |
| 498 | @item news:@var{message-id} | 498 | @item news:@var{message-id} |
| 499 | Retrieves the message with the given @var{message-id}; | 499 | Retrieves the message with the given @var{message-id}; |
| 500 | @item news:* | 500 | @item news:* |
| 501 | Retrieves a list of all available newsgroups; | 501 | Retrieves a list of all available newsgroups; |
| 502 | @item nntp://@var{host}:@var{port}/@var{newsgroup} | 502 | @item nntp://@var{host}:@var{port}/@var{newsgroup} |
| 503 | @itemx nntp://@var{host}:@var{port}/@var{message-id} | 503 | @itemx nntp://@var{host}:@var{port}/@var{message-id} |
| @@ -510,7 +510,7 @@ Similar to the @samp{news} versions. | |||
| 510 | @samp{snews} is the same as @samp{nntp} except that the default port | 510 | @samp{snews} is the same as @samp{nntp} except that the default port |
| 511 | is :563. | 511 | is :563. |
| 512 | @cindex SSL | 512 | @cindex SSL |
| 513 | (It is tunnelled through SSL.) | 513 | (It is tunneled through SSL.) |
| 514 | 514 | ||
| 515 | An @samp{nntp} URL is the same as a news URL, except that the URL may | 515 | An @samp{nntp} URL is the same as a news URL, except that the URL may |
| 516 | specify an article by its number. | 516 | specify an article by its number. |
| @@ -550,9 +550,9 @@ Well-known ports are used if the URL does not specify a port. | |||
| 550 | @cindex IRC | 550 | @cindex IRC |
| 551 | @cindex Internet Relay Chat | 551 | @cindex Internet Relay Chat |
| 552 | @cindex ZEN IRC | 552 | @cindex ZEN IRC |
| 553 | @c Fixme: reference (was http://www.w3.org/Addressing/draft-mirashi-url-irc-01.txt) | 553 | @c Fixme: reference (was http://www.w3.org/Addressing/draft-mirashi-url-irc-01.txt) |
| 554 | @dfn{Internet Relay Chat} (IRC) is handled by handing off the @sc{irc} | 554 | @dfn{Internet Relay Chat} (IRC) is handled by handing off the @sc{irc} |
| 555 | session to a function named in @code{url-irc-function}. | 555 | session to a function named in @code{url-irc-function}. |
| 556 | 556 | ||
| 557 | @defopt url-irc-function | 557 | @defopt url-irc-function |
| 558 | A function to actually open an IRC connection. | 558 | A function to actually open an IRC connection. |
| @@ -582,7 +582,7 @@ including parameters. It defaults to | |||
| 582 | @samp{text/plain;charset=US-ASCII}. The @samp{text/plain} can be | 582 | @samp{text/plain;charset=US-ASCII}. The @samp{text/plain} can be |
| 583 | omitted but the charset parameter supplied. If @samp{;base64} is | 583 | omitted but the charset parameter supplied. If @samp{;base64} is |
| 584 | present, the @var{data} are base64-encoded. | 584 | present, the @var{data} are base64-encoded. |
| 585 | 585 | ||
| 586 | @node nfs | 586 | @node nfs |
| 587 | @section nfs | 587 | @section nfs |
| 588 | @cindex NFS | 588 | @cindex NFS |
| @@ -658,11 +658,11 @@ the Lisp @code{man} function. | |||
| 658 | @chapter Defining New URLs | 658 | @chapter Defining New URLs |
| 659 | 659 | ||
| 660 | @menu | 660 | @menu |
| 661 | * Naming conventions:: | 661 | * Naming conventions:: |
| 662 | * Required functions:: | 662 | * Required functions:: |
| 663 | * Optional functions:: | 663 | * Optional functions:: |
| 664 | * Asynchronous fetching:: | 664 | * Asynchronous fetching:: |
| 665 | * Supporting file-name-handlers:: | 665 | * Supporting file-name-handlers:: |
| 666 | @end menu | 666 | @end menu |
| 667 | 667 | ||
| 668 | @node Naming conventions | 668 | @node Naming conventions |
| @@ -684,10 +684,10 @@ the Lisp @code{man} function. | |||
| 684 | @chapter General Facilities | 684 | @chapter General Facilities |
| 685 | 685 | ||
| 686 | @menu | 686 | @menu |
| 687 | * Disk Caching:: | 687 | * Disk Caching:: |
| 688 | * Proxies:: | 688 | * Proxies:: |
| 689 | * Gateways in general:: | 689 | * Gateways in general:: |
| 690 | * History:: | 690 | * History:: |
| 691 | @end menu | 691 | @end menu |
| 692 | 692 | ||
| 693 | @node Disk Caching | 693 | @node Disk Caching |
| @@ -761,7 +761,7 @@ more likely to conflict with other files. | |||
| 761 | @end smallexample | 761 | @end smallexample |
| 762 | @end defun | 762 | @end defun |
| 763 | 763 | ||
| 764 | @c Fixme: never actually used currently? | 764 | @c Fixme: never actually used currently? |
| 765 | @c @defopt url-standalone-mode | 765 | @c @defopt url-standalone-mode |
| 766 | @c @cindex Relying on cache | 766 | @c @cindex Relying on cache |
| 767 | @c @cindex Cache only mode | 767 | @c @cindex Cache only mode |
| @@ -783,7 +783,7 @@ more likely to conflict with other files. | |||
| 783 | @node Proxies | 783 | @node Proxies |
| 784 | @section Proxies and Gatewaying | 784 | @section Proxies and Gatewaying |
| 785 | 785 | ||
| 786 | @c fixme: check/document url-ns stuff | 786 | @c fixme: check/document url-ns stuff |
| 787 | @cindex proxy servers | 787 | @cindex proxy servers |
| 788 | @cindex proxies | 788 | @cindex proxies |
| 789 | @cindex environment variables | 789 | @cindex environment variables |
| @@ -815,7 +815,7 @@ NO_PROXY="*.aventail.com,home.com,.seanet.com" | |||
| 815 | @noindent says to contact all machines in the @samp{aventail.com} and | 815 | @noindent says to contact all machines in the @samp{aventail.com} and |
| 816 | @samp{seanet.com} domains directly, as well as the machine named | 816 | @samp{seanet.com} domains directly, as well as the machine named |
| 817 | @samp{home.com}. If @code{NO_PROXY} isn't defined, @code{no_PROXY} | 817 | @samp{home.com}. If @code{NO_PROXY} isn't defined, @code{no_PROXY} |
| 818 | and @code{no_proxy} are also tried, in that order. | 818 | and @code{no_proxy} are also tried, in that order. |
| 819 | 819 | ||
| 820 | Proxies may also be specified directly in Lisp. | 820 | Proxies may also be specified directly in Lisp. |
| 821 | 821 | ||
| @@ -940,7 +940,7 @@ This specifies the default server, it takes the form | |||
| 940 | where @var{version} can be either 4 or 5. | 940 | where @var{version} can be either 4 or 5. |
| 941 | @end defopt | 941 | @end defopt |
| 942 | @defvar socks-password | 942 | @defvar socks-password |
| 943 | If this is @code{nil} then you will be asked for the passward, | 943 | If this is @code{nil} then you will be asked for the password, |
| 944 | otherwise it will be used as the password for authenticating you to | 944 | otherwise it will be used as the password for authenticating you to |
| 945 | the @sc{socks} server. | 945 | the @sc{socks} server. |
| 946 | @end defvar | 946 | @end defvar |
| @@ -980,9 +980,9 @@ This the @samp{nslookup} program. It is @code{"nslookup"} by default. | |||
| 980 | @end defopt | 980 | @end defopt |
| 981 | 981 | ||
| 982 | @menu | 982 | @menu |
| 983 | * Suppressing network connexions:: | 983 | * Suppressing network connexions:: |
| 984 | @end menu | 984 | @end menu |
| 985 | @c * Broken hostname resolution:: | 985 | @c * Broken hostname resolution:: |
| 986 | 986 | ||
| 987 | @node Suppressing network connexions | 987 | @node Suppressing network connexions |
| 988 | @subsection Suppressing Network Connexions | 988 | @subsection Suppressing Network Connexions |
| @@ -1010,7 +1010,7 @@ opened by the URL library. | |||
| 1010 | @c @cindex resolver, hostname | 1010 | @c @cindex resolver, hostname |
| 1011 | @c Some C libraries do not include the hostname resolver routines in | 1011 | @c Some C libraries do not include the hostname resolver routines in |
| 1012 | @c their static libraries. If Emacs was linked statically, and was not | 1012 | @c their static libraries. If Emacs was linked statically, and was not |
| 1013 | @c linked with the resolver libraries, it wil not be able to get to any | 1013 | @c linked with the resolver libraries, it will not be able to get to any |
| 1014 | @c machines off the local network. This is characterized by being able | 1014 | @c machines off the local network. This is characterized by being able |
| 1015 | @c to reach someplace with a raw ip number, but not its hostname | 1015 | @c to reach someplace with a raw ip number, but not its hostname |
| 1016 | @c (@url{http://129.79.254.191/} works, but | 1016 | @c (@url{http://129.79.254.191/} works, but |
| @@ -1052,8 +1052,8 @@ The history `list' is actually a hash table, | |||
| 1052 | strings. The times are in the format returned by @code{current-time}. | 1052 | strings. The times are in the format returned by @code{current-time}. |
| 1053 | 1053 | ||
| 1054 | @defun url-history-update-url url time | 1054 | @defun url-history-update-url url time |
| 1055 | This function updates the hsitory table with an entry for @var{url} | 1055 | This function updates the history table with an entry for @var{url} |
| 1056 | accessed at the gievn @var{time}. | 1056 | accessed at the given @var{time}. |
| 1057 | @end defun | 1057 | @end defun |
| 1058 | 1058 | ||
| 1059 | @defopt url-history-track | 1059 | @defopt url-history-track |
| @@ -1144,7 +1144,7 @@ function taking a single argument (the prompt) and returning @code{t} | |||
| 1144 | only if an affirmative answer is given. | 1144 | only if an affirmative answer is given. |
| 1145 | @end defopt | 1145 | @end defopt |
| 1146 | @defopt url-gateway-method | 1146 | @defopt url-gateway-method |
| 1147 | @c fixme: describe gatewaying | 1147 | @c fixme: describe gatewaying |
| 1148 | A symbol specifying the type of gateway support to use fro connexions | 1148 | A symbol specifying the type of gateway support to use fro connexions |
| 1149 | from the local machine. The supported methods are: | 1149 | from the local machine. The supported methods are: |
| 1150 | 1150 | ||
diff --git a/src/ChangeLog b/src/ChangeLog index a2706547e77..9323304dc46 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,118 @@ | |||
| 1 | 2004-12-23 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> | ||
| 2 | |||
| 3 | * keyboard.c (input_available_signal): Call SIGNAL_THREAD_CHECK | ||
| 4 | before touching input_available_clear_time, to avoid accessing it | ||
| 5 | from multiple threads. | ||
| 6 | |||
| 7 | 2004-12-23 Jason Rumney <jasonr@gnu.org> | ||
| 8 | |||
| 9 | * image.c (__WIN32__) [HAVE_NTGUI]: Define for correct behaviour | ||
| 10 | of JPEG library. | ||
| 11 | |||
| 12 | 2004-12-22 Richard M. Stallman <rms@gnu.org> | ||
| 13 | |||
| 14 | * emacs.c (main): If batch mode, set Vundo_outer_limit to nil. | ||
| 15 | |||
| 16 | * lisp.h (Vundo_outer_limit): Fix decl. | ||
| 17 | |||
| 18 | * undo.c (Vundo_outer_limit): Replaces undo_outer_limit. | ||
| 19 | Uses changed. | ||
| 20 | (syms_of_undo): Initialize appropriately. | ||
| 21 | (truncate_undo_list): If it's nil, there's no limit. | ||
| 22 | |||
| 23 | 2004-12-22 Kenichi Handa <handa@m17n.org> | ||
| 24 | |||
| 25 | * xselect.c (Fx_get_cut_buffer_internal): Return a unibyte string. | ||
| 26 | |||
| 27 | 2004-12-21 Richard M. Stallman <rms@gnu.org> | ||
| 28 | |||
| 29 | * eval.c (unwind_to_catch): Clear immediate_quit. | ||
| 30 | |||
| 31 | * xdisp.c (get_next_display_element): Display codes 8a0 and 8ad | ||
| 32 | specially as `\ ' and `\-'. | ||
| 33 | |||
| 34 | * keyboard.c (kbd_buffer_store_event_hold): | ||
| 35 | In the code for while-no-input, handle immediate_quit. | ||
| 36 | |||
| 37 | * alloc.c (Fgarbage_collect): Update call to truncate_undo_list. | ||
| 38 | Call that at the very start. | ||
| 39 | (undo_limit, undo_strong_limit, undo_outer_limit): Moved to undo.c. | ||
| 40 | (syms_of_alloc): Don't define undo-limit, | ||
| 41 | undo-strong-limit and undo-outer-limit here. | ||
| 42 | |||
| 43 | * undo.c (truncate_undo_list): Return void. | ||
| 44 | Take just one argument, the buffer. | ||
| 45 | Make it current, and inhibit recursive GC. | ||
| 46 | Access and update the undo list directly; return void. | ||
| 47 | Refer to the undo...limit variables directly. | ||
| 48 | Test undo_outer_limit only after counting the whole current command. | ||
| 49 | When it's exceeded, call the function in undo-outer-limit-function. | ||
| 50 | (undo_limit, undo_strong_limit, undo_outer_limit): From alloc.c. | ||
| 51 | (Vundo_outer_limit_function): New variable. | ||
| 52 | (syms_of_undo): Define undo-limit, undo-strong-limit | ||
| 53 | and undo-outer-limit here, and undo-outer-limit-function. | ||
| 54 | Doc fixes. | ||
| 55 | |||
| 56 | * lisp.h (truncate_undo_list): Update decl. | ||
| 57 | |||
| 58 | 2004-12-21 Piet van Oostrum <piet@cs.uu.nl> | ||
| 59 | |||
| 60 | * fileio.c (Fread_file_name): Delete duplicates in | ||
| 61 | file-name-history when history_delete_duplicates is true. | ||
| 62 | |||
| 63 | 2004-12-20 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> | ||
| 64 | |||
| 65 | * macterm.c (mac_do_list_fonts): Fix memory leak | ||
| 66 | |||
| 67 | 2004-12-20 Richard M. Stallman <rms@gnu.org> | ||
| 68 | |||
| 69 | * regex.c (re_match_2_internal) <symend, wordend>: | ||
| 70 | Fix calls to UPDATE_SYNTAX_TABLE_FORWARD. | ||
| 71 | |||
| 72 | 2004-12-18 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> | ||
| 73 | |||
| 74 | * macterm.c (endif, x_font_name_to_mac_font_name): Use | ||
| 75 | maccentraleurroman instead of maccentraleuropean | ||
| 76 | (mac_c_string_match, mac_do_list_fonts): Speed up font search by | ||
| 77 | quickly finding a specific font without needing regexps. | ||
| 78 | |||
| 79 | 2004-12-15 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> | ||
| 80 | |||
| 81 | * syssignal.h: Declare main_thread. | ||
| 82 | (SIGNAL_THREAD_CHECK): New macro. | ||
| 83 | |||
| 84 | * keyboard.c (input_available_signal): Move thread checking code | ||
| 85 | to macro SIGNAL_THREAD_CHECK and call that macro. | ||
| 86 | (interrupt_signal): Call SIGNAL_THREAD_CHECK. | ||
| 87 | |||
| 88 | * alloc.c (uninterrupt_malloc): Move main_thread to emacs.c. | ||
| 89 | |||
| 90 | * emacs.c: Define main_thread. | ||
| 91 | (main): Initialize main_thread. | ||
| 92 | (handle_USR1_signal, handle_USR2_signal, fatal_error_signal) | ||
| 93 | (memory_warning_signal): Call SIGNAL_THREAD_CHECK. | ||
| 94 | |||
| 95 | * floatfns.c (float_error): Call SIGNAL_THREAD_CHECK. | ||
| 96 | |||
| 97 | * dispnew.c (window_change_signal): Call SIGNAL_THREAD_CHECK. | ||
| 98 | |||
| 99 | * sysdep.c (select_alarm): Call SIGNAL_THREAD_CHECK. | ||
| 100 | |||
| 101 | * process.c (send_process_trap, sigchld_handler): Call | ||
| 102 | SIGNAL_THREAD_CHECK. | ||
| 103 | |||
| 104 | * data.c (arith_error): Call SIGNAL_THREAD_CHECK. | ||
| 105 | |||
| 106 | * atimer.c (alarm_signal_handler): Call SIGNAL_THREAD_CHECK. | ||
| 107 | |||
| 108 | * xterm.c (xg_scroll_callback): Update XG_LAST_SB_DATA before | ||
| 109 | returning when xg_ignore_gtk_scrollbar is true. | ||
| 110 | |||
| 111 | 2004-12-14 Kim F. Storm <storm@cua.dk> | ||
| 112 | |||
| 113 | * keyboard.c (read_char): Save and restore echo_string when | ||
| 114 | handling input method. | ||
| 115 | |||
| 1 | 2004-12-13 Richard M. Stallman <rms@gnu.org> | 116 | 2004-12-13 Richard M. Stallman <rms@gnu.org> |
| 2 | 117 | ||
| 3 | * eval.c (syms_of_eval) <quit-flag>: Doc fix. | 118 | * eval.c (syms_of_eval) <quit-flag>: Doc fix. |
| @@ -143,6 +258,7 @@ | |||
| 143 | * eval.c (Fcalled_interactively_p): Don't check INTERACTIVE. | 258 | * eval.c (Fcalled_interactively_p): Don't check INTERACTIVE. |
| 144 | (interactive_p): Skip Scalled_interactively_p frames | 259 | (interactive_p): Skip Scalled_interactively_p frames |
| 145 | like Sinteractive_p frames. | 260 | like Sinteractive_p frames. |
| 261 | (unwind_to_catch): Clear handling_signal. | ||
| 146 | 262 | ||
| 147 | * data.c (Fmake_variable_buffer_local): Doc fix. | 263 | * data.c (Fmake_variable_buffer_local): Doc fix. |
| 148 | (Fmake_local_variable): Doc fix. | 264 | (Fmake_local_variable): Doc fix. |
diff --git a/src/alloc.c b/src/alloc.c index 2a539920f22..9dd5e1abc05 100644 --- a/src/alloc.c +++ b/src/alloc.c | |||
| @@ -99,7 +99,7 @@ extern __malloc_size_t __malloc_extra_blocks; | |||
| 99 | If Emacs sets malloc hooks (! SYSTEM_MALLOC) and the emacs_blocked_* | 99 | If Emacs sets malloc hooks (! SYSTEM_MALLOC) and the emacs_blocked_* |
| 100 | functions below are called from malloc, there is a chance that one | 100 | functions below are called from malloc, there is a chance that one |
| 101 | of these threads preempts the Emacs main thread and the hook variables | 101 | of these threads preempts the Emacs main thread and the hook variables |
| 102 | end up in a inconsistent state. So we have a mutex to prevent that (note | 102 | end up in an inconsistent state. So we have a mutex to prevent that (note |
| 103 | that the backend handles concurrent access to malloc within its own threads | 103 | that the backend handles concurrent access to malloc within its own threads |
| 104 | but Emacs code running in the main thread is not included in that control). | 104 | but Emacs code running in the main thread is not included in that control). |
| 105 | 105 | ||
| @@ -109,7 +109,6 @@ extern __malloc_size_t __malloc_extra_blocks; | |||
| 109 | To prevent that, we only call BLOCK/UNBLOCK from the main thread. */ | 109 | To prevent that, we only call BLOCK/UNBLOCK from the main thread. */ |
| 110 | 110 | ||
| 111 | static pthread_mutex_t alloc_mutex; | 111 | static pthread_mutex_t alloc_mutex; |
| 112 | pthread_t main_thread; | ||
| 113 | 112 | ||
| 114 | #define BLOCK_INPUT_ALLOC \ | 113 | #define BLOCK_INPUT_ALLOC \ |
| 115 | do \ | 114 | do \ |
| @@ -201,12 +200,6 @@ extern | |||
| 201 | #endif /* VIRT_ADDR_VARIES */ | 200 | #endif /* VIRT_ADDR_VARIES */ |
| 202 | int malloc_sbrk_unused; | 201 | int malloc_sbrk_unused; |
| 203 | 202 | ||
| 204 | /* Two limits controlling how much undo information to keep. */ | ||
| 205 | |||
| 206 | EMACS_INT undo_limit; | ||
| 207 | EMACS_INT undo_strong_limit; | ||
| 208 | EMACS_INT undo_outer_limit; | ||
| 209 | |||
| 210 | /* Number of live and free conses etc. */ | 203 | /* Number of live and free conses etc. */ |
| 211 | 204 | ||
| 212 | static int total_conses, total_markers, total_symbols, total_vector_size; | 205 | static int total_conses, total_markers, total_symbols, total_vector_size; |
| @@ -1310,8 +1303,6 @@ uninterrupt_malloc () | |||
| 1310 | pthread_mutexattr_init (&attr); | 1303 | pthread_mutexattr_init (&attr); |
| 1311 | pthread_mutexattr_settype (&attr, PTHREAD_MUTEX_RECURSIVE); | 1304 | pthread_mutexattr_settype (&attr, PTHREAD_MUTEX_RECURSIVE); |
| 1312 | pthread_mutex_init (&alloc_mutex, &attr); | 1305 | pthread_mutex_init (&alloc_mutex, &attr); |
| 1313 | |||
| 1314 | main_thread = pthread_self (); | ||
| 1315 | #endif /* HAVE_GTK_AND_PTHREAD */ | 1306 | #endif /* HAVE_GTK_AND_PTHREAD */ |
| 1316 | 1307 | ||
| 1317 | if (__free_hook != emacs_blocked_free) | 1308 | if (__free_hook != emacs_blocked_free) |
| @@ -4604,13 +4595,48 @@ returns nil, because real GC can't be done. */) | |||
| 4604 | if (abort_on_gc) | 4595 | if (abort_on_gc) |
| 4605 | abort (); | 4596 | abort (); |
| 4606 | 4597 | ||
| 4607 | EMACS_GET_TIME (t1); | ||
| 4608 | |||
| 4609 | /* Can't GC if pure storage overflowed because we can't determine | 4598 | /* Can't GC if pure storage overflowed because we can't determine |
| 4610 | if something is a pure object or not. */ | 4599 | if something is a pure object or not. */ |
| 4611 | if (pure_bytes_used_before_overflow) | 4600 | if (pure_bytes_used_before_overflow) |
| 4612 | return Qnil; | 4601 | return Qnil; |
| 4613 | 4602 | ||
| 4603 | /* Don't keep undo information around forever. | ||
| 4604 | Do this early on, so it is no problem if the user quits. */ | ||
| 4605 | { | ||
| 4606 | register struct buffer *nextb = all_buffers; | ||
| 4607 | |||
| 4608 | while (nextb) | ||
| 4609 | { | ||
| 4610 | /* If a buffer's undo list is Qt, that means that undo is | ||
| 4611 | turned off in that buffer. Calling truncate_undo_list on | ||
| 4612 | Qt tends to return NULL, which effectively turns undo back on. | ||
| 4613 | So don't call truncate_undo_list if undo_list is Qt. */ | ||
| 4614 | if (! EQ (nextb->undo_list, Qt)) | ||
| 4615 | truncate_undo_list (nextb); | ||
| 4616 | |||
| 4617 | /* Shrink buffer gaps, but skip indirect and dead buffers. */ | ||
| 4618 | if (nextb->base_buffer == 0 && !NILP (nextb->name)) | ||
| 4619 | { | ||
| 4620 | /* If a buffer's gap size is more than 10% of the buffer | ||
| 4621 | size, or larger than 2000 bytes, then shrink it | ||
| 4622 | accordingly. Keep a minimum size of 20 bytes. */ | ||
| 4623 | int size = min (2000, max (20, (nextb->text->z_byte / 10))); | ||
| 4624 | |||
| 4625 | if (nextb->text->gap_size > size) | ||
| 4626 | { | ||
| 4627 | struct buffer *save_current = current_buffer; | ||
| 4628 | current_buffer = nextb; | ||
| 4629 | make_gap (-(nextb->text->gap_size - size)); | ||
| 4630 | current_buffer = save_current; | ||
| 4631 | } | ||
| 4632 | } | ||
| 4633 | |||
| 4634 | nextb = nextb->next; | ||
| 4635 | } | ||
| 4636 | } | ||
| 4637 | |||
| 4638 | EMACS_GET_TIME (t1); | ||
| 4639 | |||
| 4614 | /* In case user calls debug_print during GC, | 4640 | /* In case user calls debug_print during GC, |
| 4615 | don't let that cause a recursive GC. */ | 4641 | don't let that cause a recursive GC. */ |
| 4616 | consing_since_gc = 0; | 4642 | consing_since_gc = 0; |
| @@ -4649,42 +4675,6 @@ returns nil, because real GC can't be done. */) | |||
| 4649 | 4675 | ||
| 4650 | shrink_regexp_cache (); | 4676 | shrink_regexp_cache (); |
| 4651 | 4677 | ||
| 4652 | /* Don't keep undo information around forever. */ | ||
| 4653 | { | ||
| 4654 | register struct buffer *nextb = all_buffers; | ||
| 4655 | |||
| 4656 | while (nextb) | ||
| 4657 | { | ||
| 4658 | /* If a buffer's undo list is Qt, that means that undo is | ||
| 4659 | turned off in that buffer. Calling truncate_undo_list on | ||
| 4660 | Qt tends to return NULL, which effectively turns undo back on. | ||
| 4661 | So don't call truncate_undo_list if undo_list is Qt. */ | ||
| 4662 | if (! EQ (nextb->undo_list, Qt)) | ||
| 4663 | nextb->undo_list | ||
| 4664 | = truncate_undo_list (nextb->undo_list, undo_limit, | ||
| 4665 | undo_strong_limit, undo_outer_limit); | ||
| 4666 | |||
| 4667 | /* Shrink buffer gaps, but skip indirect and dead buffers. */ | ||
| 4668 | if (nextb->base_buffer == 0 && !NILP (nextb->name)) | ||
| 4669 | { | ||
| 4670 | /* If a buffer's gap size is more than 10% of the buffer | ||
| 4671 | size, or larger than 2000 bytes, then shrink it | ||
| 4672 | accordingly. Keep a minimum size of 20 bytes. */ | ||
| 4673 | int size = min (2000, max (20, (nextb->text->z_byte / 10))); | ||
| 4674 | |||
| 4675 | if (nextb->text->gap_size > size) | ||
| 4676 | { | ||
| 4677 | struct buffer *save_current = current_buffer; | ||
| 4678 | current_buffer = nextb; | ||
| 4679 | make_gap (-(nextb->text->gap_size - size)); | ||
| 4680 | current_buffer = save_current; | ||
| 4681 | } | ||
| 4682 | } | ||
| 4683 | |||
| 4684 | nextb = nextb->next; | ||
| 4685 | } | ||
| 4686 | } | ||
| 4687 | |||
| 4688 | gc_in_progress = 1; | 4678 | gc_in_progress = 1; |
| 4689 | 4679 | ||
| 4690 | /* clear_marks (); */ | 4680 | /* clear_marks (); */ |
| @@ -5959,29 +5949,6 @@ prevent garbage collection during a part of the program. */); | |||
| 5959 | doc: /* Non-nil means loading Lisp code in order to dump an executable. | 5949 | doc: /* Non-nil means loading Lisp code in order to dump an executable. |
| 5960 | This means that certain objects should be allocated in shared (pure) space. */); | 5950 | This means that certain objects should be allocated in shared (pure) space. */); |
| 5961 | 5951 | ||
| 5962 | DEFVAR_INT ("undo-limit", &undo_limit, | ||
| 5963 | doc: /* Keep no more undo information once it exceeds this size. | ||
| 5964 | This limit is applied when garbage collection happens. | ||
| 5965 | The size is counted as the number of bytes occupied, | ||
| 5966 | which includes both saved text and other data. */); | ||
| 5967 | undo_limit = 20000; | ||
| 5968 | |||
| 5969 | DEFVAR_INT ("undo-strong-limit", &undo_strong_limit, | ||
| 5970 | doc: /* Don't keep more than this much size of undo information. | ||
| 5971 | A previous command which pushes the undo list past this size | ||
| 5972 | is entirely forgotten when GC happens. | ||
| 5973 | The size is counted as the number of bytes occupied, | ||
| 5974 | which includes both saved text and other data. */); | ||
| 5975 | undo_strong_limit = 30000; | ||
| 5976 | |||
| 5977 | DEFVAR_INT ("undo-outer-limit", &undo_outer_limit, | ||
| 5978 | doc: /* Don't keep more than this much size of undo information. | ||
| 5979 | If the current command has produced more than this much undo information, | ||
| 5980 | GC discards it. This is a last-ditch limit to prevent memory overflow. | ||
| 5981 | The size is counted as the number of bytes occupied, | ||
| 5982 | which includes both saved text and other data. */); | ||
| 5983 | undo_outer_limit = 300000; | ||
| 5984 | |||
| 5985 | DEFVAR_BOOL ("garbage-collection-messages", &garbage_collection_messages, | 5952 | DEFVAR_BOOL ("garbage-collection-messages", &garbage_collection_messages, |
| 5986 | doc: /* Non-nil means display messages at start and end of garbage collection. */); | 5953 | doc: /* Non-nil means display messages at start and end of garbage collection. */); |
| 5987 | garbage_collection_messages = 0; | 5954 | garbage_collection_messages = 0; |
diff --git a/src/atimer.c b/src/atimer.c index 7410cad0244..ff5b8faaf36 100644 --- a/src/atimer.c +++ b/src/atimer.c | |||
| @@ -364,6 +364,8 @@ alarm_signal_handler (signo) | |||
| 364 | { | 364 | { |
| 365 | EMACS_TIME now; | 365 | EMACS_TIME now; |
| 366 | 366 | ||
| 367 | SIGNAL_THREAD_CHECK (signo); | ||
| 368 | |||
| 367 | EMACS_GET_TIME (now); | 369 | EMACS_GET_TIME (now); |
| 368 | pending_atimers = 0; | 370 | pending_atimers = 0; |
| 369 | 371 | ||
diff --git a/src/data.c b/src/data.c index 0439d5763bc..8fbc04489b9 100644 --- a/src/data.c +++ b/src/data.c | |||
| @@ -3262,6 +3262,7 @@ arith_error (signo) | |||
| 3262 | sigsetmask (SIGEMPTYMASK); | 3262 | sigsetmask (SIGEMPTYMASK); |
| 3263 | #endif /* not BSD4_1 */ | 3263 | #endif /* not BSD4_1 */ |
| 3264 | 3264 | ||
| 3265 | SIGNAL_THREAD_CHECK (signo); | ||
| 3265 | Fsignal (Qarith_error, Qnil); | 3266 | Fsignal (Qarith_error, Qnil); |
| 3266 | } | 3267 | } |
| 3267 | 3268 | ||
diff --git a/src/dispnew.c b/src/dispnew.c index 814a3095ddf..f04e806b368 100644 --- a/src/dispnew.c +++ b/src/dispnew.c | |||
| @@ -5980,6 +5980,9 @@ window_change_signal (signalnum) /* If we don't have an argument, */ | |||
| 5980 | #endif | 5980 | #endif |
| 5981 | int old_errno = errno; | 5981 | int old_errno = errno; |
| 5982 | 5982 | ||
| 5983 | signal (SIGWINCH, window_change_signal); | ||
| 5984 | SIGNAL_THREAD_CHECK (signalnum); | ||
| 5985 | |||
| 5983 | get_frame_size (&width, &height); | 5986 | get_frame_size (&width, &height); |
| 5984 | 5987 | ||
| 5985 | /* The frame size change obviously applies to a termcap-controlled | 5988 | /* The frame size change obviously applies to a termcap-controlled |
| @@ -6002,7 +6005,6 @@ window_change_signal (signalnum) /* If we don't have an argument, */ | |||
| 6002 | } | 6005 | } |
| 6003 | } | 6006 | } |
| 6004 | 6007 | ||
| 6005 | signal (SIGWINCH, window_change_signal); | ||
| 6006 | errno = old_errno; | 6008 | errno = old_errno; |
| 6007 | } | 6009 | } |
| 6008 | #endif /* SIGWINCH */ | 6010 | #endif /* SIGWINCH */ |
diff --git a/src/emacs.c b/src/emacs.c index 02031fe9072..d84cc29fcfa 100644 --- a/src/emacs.c +++ b/src/emacs.c | |||
| @@ -342,6 +342,14 @@ int fatal_error_in_progress; | |||
| 342 | 342 | ||
| 343 | void (*fatal_error_signal_hook) P_ ((void)); | 343 | void (*fatal_error_signal_hook) P_ ((void)); |
| 344 | 344 | ||
| 345 | #ifdef HAVE_GTK_AND_PTHREAD | ||
| 346 | /* When compiled with GTK and running under Gnome, multiple threads meay be | ||
| 347 | created. Keep track of our main thread to make sure signals are delivered | ||
| 348 | to it (see syssignal.h). */ | ||
| 349 | |||
| 350 | pthread_t main_thread; | ||
| 351 | #endif | ||
| 352 | |||
| 345 | 353 | ||
| 346 | #ifdef SIGUSR1 | 354 | #ifdef SIGUSR1 |
| 347 | SIGTYPE | 355 | SIGTYPE |
| @@ -350,6 +358,7 @@ handle_USR1_signal (sig) | |||
| 350 | { | 358 | { |
| 351 | struct input_event buf; | 359 | struct input_event buf; |
| 352 | 360 | ||
| 361 | SIGNAL_THREAD_CHECK (sig); | ||
| 353 | bzero (&buf, sizeof buf); | 362 | bzero (&buf, sizeof buf); |
| 354 | buf.kind = USER_SIGNAL_EVENT; | 363 | buf.kind = USER_SIGNAL_EVENT; |
| 355 | buf.frame_or_window = selected_frame; | 364 | buf.frame_or_window = selected_frame; |
| @@ -365,6 +374,7 @@ handle_USR2_signal (sig) | |||
| 365 | { | 374 | { |
| 366 | struct input_event buf; | 375 | struct input_event buf; |
| 367 | 376 | ||
| 377 | SIGNAL_THREAD_CHECK (sig); | ||
| 368 | bzero (&buf, sizeof buf); | 378 | bzero (&buf, sizeof buf); |
| 369 | buf.kind = USER_SIGNAL_EVENT; | 379 | buf.kind = USER_SIGNAL_EVENT; |
| 370 | buf.code = 1; | 380 | buf.code = 1; |
| @@ -379,6 +389,7 @@ SIGTYPE | |||
| 379 | fatal_error_signal (sig) | 389 | fatal_error_signal (sig) |
| 380 | int sig; | 390 | int sig; |
| 381 | { | 391 | { |
| 392 | SIGNAL_THREAD_CHECK (sig); | ||
| 382 | fatal_error_code = sig; | 393 | fatal_error_code = sig; |
| 383 | signal (sig, SIG_DFL); | 394 | signal (sig, SIG_DFL); |
| 384 | 395 | ||
| @@ -418,6 +429,7 @@ memory_warning_signal (sig) | |||
| 418 | int sig; | 429 | int sig; |
| 419 | { | 430 | { |
| 420 | signal (sig, memory_warning_signal); | 431 | signal (sig, memory_warning_signal); |
| 432 | SIGNAL_THREAD_CHECK (sig); | ||
| 421 | 433 | ||
| 422 | malloc_warning ("Operating system warns that virtual memory is running low.\n"); | 434 | malloc_warning ("Operating system warns that virtual memory is running low.\n"); |
| 423 | 435 | ||
| @@ -1029,6 +1041,10 @@ main (argc, argv | |||
| 1029 | # endif /* not SYNC_INPUT */ | 1041 | # endif /* not SYNC_INPUT */ |
| 1030 | #endif /* not SYSTEM_MALLOC */ | 1042 | #endif /* not SYSTEM_MALLOC */ |
| 1031 | 1043 | ||
| 1044 | #ifdef HAVE_GTK_AND_PTHREAD | ||
| 1045 | main_thread = pthread_self (); | ||
| 1046 | #endif /* HAVE_GTK_AND_PTHREAD */ | ||
| 1047 | |||
| 1032 | #if defined (MSDOS) || defined (WINDOWSNT) | 1048 | #if defined (MSDOS) || defined (WINDOWSNT) |
| 1033 | /* We do all file input/output as binary files. When we need to translate | 1049 | /* We do all file input/output as binary files. When we need to translate |
| 1034 | newlines, we do that manually. */ | 1050 | newlines, we do that manually. */ |
| @@ -1117,7 +1133,10 @@ main (argc, argv | |||
| 1117 | /* Handle the -batch switch, which means don't do interactive display. */ | 1133 | /* Handle the -batch switch, which means don't do interactive display. */ |
| 1118 | noninteractive = 0; | 1134 | noninteractive = 0; |
| 1119 | if (argmatch (argv, argc, "-batch", "--batch", 5, NULL, &skip_args)) | 1135 | if (argmatch (argv, argc, "-batch", "--batch", 5, NULL, &skip_args)) |
| 1120 | noninteractive = 1; | 1136 | { |
| 1137 | noninteractive = 1; | ||
| 1138 | Vundo_outer_limit = Qnil; | ||
| 1139 | } | ||
| 1121 | if (argmatch (argv, argc, "-script", "--script", 3, &junk, &skip_args)) | 1140 | if (argmatch (argv, argc, "-script", "--script", 3, &junk, &skip_args)) |
| 1122 | { | 1141 | { |
| 1123 | noninteractive = 1; /* Set batch mode. */ | 1142 | noninteractive = 1; /* Set batch mode. */ |
diff --git a/src/eval.c b/src/eval.c index 879f916aa46..df528e3da80 100644 --- a/src/eval.c +++ b/src/eval.c | |||
| @@ -1178,6 +1178,7 @@ unwind_to_catch (catch, value) | |||
| 1178 | set_poll_suppress_count (catch->poll_suppress_count); | 1178 | set_poll_suppress_count (catch->poll_suppress_count); |
| 1179 | interrupt_input_blocked = catch->interrupt_input_blocked; | 1179 | interrupt_input_blocked = catch->interrupt_input_blocked; |
| 1180 | handling_signal = 0; | 1180 | handling_signal = 0; |
| 1181 | immediate_quit = 0; | ||
| 1181 | 1182 | ||
| 1182 | do | 1183 | do |
| 1183 | { | 1184 | { |
diff --git a/src/fileio.c b/src/fileio.c index 6f52f792a5b..3b43a06e7ea 100644 --- a/src/fileio.c +++ b/src/fileio.c | |||
| @@ -228,6 +228,8 @@ extern int minibuf_level; | |||
| 228 | 228 | ||
| 229 | extern int minibuffer_auto_raise; | 229 | extern int minibuffer_auto_raise; |
| 230 | 230 | ||
| 231 | extern int history_delete_duplicates; | ||
| 232 | |||
| 231 | /* These variables describe handlers that have "already" had a chance | 233 | /* These variables describe handlers that have "already" had a chance |
| 232 | to handle the current operation. | 234 | to handle the current operation. |
| 233 | 235 | ||
| @@ -6299,7 +6301,13 @@ and `read-file-name-function'. */) | |||
| 6299 | if (replace_in_history) | 6301 | if (replace_in_history) |
| 6300 | /* Replace what Fcompleting_read added to the history | 6302 | /* Replace what Fcompleting_read added to the history |
| 6301 | with what we will actually return. */ | 6303 | with what we will actually return. */ |
| 6302 | XSETCAR (Fsymbol_value (Qfile_name_history), double_dollars (val)); | 6304 | { |
| 6305 | Lisp_Object val1 = double_dollars (val); | ||
| 6306 | tem = Fsymbol_value (Qfile_name_history); | ||
| 6307 | if (history_delete_duplicates) | ||
| 6308 | XSETCDR (tem, Fdelete (val1, XCDR(tem))); | ||
| 6309 | XSETCAR (tem, val1); | ||
| 6310 | } | ||
| 6303 | else if (add_to_history) | 6311 | else if (add_to_history) |
| 6304 | { | 6312 | { |
| 6305 | /* Add the value to the history--but not if it matches | 6313 | /* Add the value to the history--but not if it matches |
| @@ -6307,8 +6315,10 @@ and `read-file-name-function'. */) | |||
| 6307 | Lisp_Object val1 = double_dollars (val); | 6315 | Lisp_Object val1 = double_dollars (val); |
| 6308 | tem = Fsymbol_value (Qfile_name_history); | 6316 | tem = Fsymbol_value (Qfile_name_history); |
| 6309 | if (! CONSP (tem) || NILP (Fequal (XCAR (tem), val1))) | 6317 | if (! CONSP (tem) || NILP (Fequal (XCAR (tem), val1))) |
| 6310 | Fset (Qfile_name_history, | 6318 | { |
| 6311 | Fcons (val1, tem)); | 6319 | if (history_delete_duplicates) tem = Fdelete (val1, tem); |
| 6320 | Fset (Qfile_name_history, Fcons (val1, tem)); | ||
| 6321 | } | ||
| 6312 | } | 6322 | } |
| 6313 | 6323 | ||
| 6314 | return val; | 6324 | return val; |
diff --git a/src/floatfns.c b/src/floatfns.c index 61879eabe39..8cd08106ef2 100644 --- a/src/floatfns.c +++ b/src/floatfns.c | |||
| @@ -981,6 +981,7 @@ float_error (signo) | |||
| 981 | signal (SIGILL, float_error); | 981 | signal (SIGILL, float_error); |
| 982 | #endif /* BSD_SYSTEM */ | 982 | #endif /* BSD_SYSTEM */ |
| 983 | 983 | ||
| 984 | SIGNAL_THREAD_CHECK (signo); | ||
| 984 | in_float = 0; | 985 | in_float = 0; |
| 985 | 986 | ||
| 986 | Fsignal (Qarith_error, Fcons (float_error_arg, Qnil)); | 987 | Fsignal (Qarith_error, Fcons (float_error_arg, Qnil)); |
diff --git a/src/image.c b/src/image.c index 18ffc2db3a4..6a86708a9d7 100644 --- a/src/image.c +++ b/src/image.c | |||
| @@ -6269,6 +6269,12 @@ jpeg_image_p (object) | |||
| 6269 | #undef HAVE_STDLIB_H | 6269 | #undef HAVE_STDLIB_H |
| 6270 | #endif /* HAVE_STLIB_H */ | 6270 | #endif /* HAVE_STLIB_H */ |
| 6271 | 6271 | ||
| 6272 | #if defined (HAVE_NTGUI) && !defined (__WIN32__) | ||
| 6273 | /* jpeglib.h will define boolean differently depending on __WIN32__, | ||
| 6274 | so make sure it is defined. */ | ||
| 6275 | #define __WIN32__ 1 | ||
| 6276 | #endif | ||
| 6277 | |||
| 6272 | #include <jpeglib.h> | 6278 | #include <jpeglib.h> |
| 6273 | #include <jerror.h> | 6279 | #include <jerror.h> |
| 6274 | #include <setjmp.h> | 6280 | #include <setjmp.h> |
diff --git a/src/keyboard.c b/src/keyboard.c index 6ed15f232d1..29e65d3acda 100644 --- a/src/keyboard.c +++ b/src/keyboard.c | |||
| @@ -3043,6 +3043,7 @@ read_char (commandflag, nmaps, maps, prev_event, used_mouse_menu) | |||
| 3043 | /* Save the echo status. */ | 3043 | /* Save the echo status. */ |
| 3044 | int saved_immediate_echo = current_kboard->immediate_echo; | 3044 | int saved_immediate_echo = current_kboard->immediate_echo; |
| 3045 | struct kboard *saved_ok_to_echo = ok_to_echo_at_next_pause; | 3045 | struct kboard *saved_ok_to_echo = ok_to_echo_at_next_pause; |
| 3046 | Lisp_Object saved_echo_string = current_kboard->echo_string; | ||
| 3046 | int saved_echo_after_prompt = current_kboard->echo_after_prompt; | 3047 | int saved_echo_after_prompt = current_kboard->echo_after_prompt; |
| 3047 | 3048 | ||
| 3048 | #if 0 | 3049 | #if 0 |
| @@ -3097,6 +3098,7 @@ read_char (commandflag, nmaps, maps, prev_event, used_mouse_menu) | |||
| 3097 | 3098 | ||
| 3098 | cancel_echoing (); | 3099 | cancel_echoing (); |
| 3099 | ok_to_echo_at_next_pause = saved_ok_to_echo; | 3100 | ok_to_echo_at_next_pause = saved_ok_to_echo; |
| 3101 | current_kboard->echo_string = saved_echo_string; | ||
| 3100 | current_kboard->echo_after_prompt = saved_echo_after_prompt; | 3102 | current_kboard->echo_after_prompt = saved_echo_after_prompt; |
| 3101 | if (saved_immediate_echo) | 3103 | if (saved_immediate_echo) |
| 3102 | echo_now (); | 3104 | echo_now (); |
| @@ -3579,6 +3581,9 @@ event_to_kboard (event) | |||
| 3579 | } | 3581 | } |
| 3580 | #endif | 3582 | #endif |
| 3581 | 3583 | ||
| 3584 | |||
| 3585 | Lisp_Object Vthrow_on_input; | ||
| 3586 | |||
| 3582 | /* Store an event obtained at interrupt level into kbd_buffer, fifo */ | 3587 | /* Store an event obtained at interrupt level into kbd_buffer, fifo */ |
| 3583 | 3588 | ||
| 3584 | void | 3589 | void |
| @@ -3704,6 +3709,24 @@ kbd_buffer_store_event_hold (event, hold_quit) | |||
| 3704 | *kbd_store_ptr = *event; | 3709 | *kbd_store_ptr = *event; |
| 3705 | ++kbd_store_ptr; | 3710 | ++kbd_store_ptr; |
| 3706 | } | 3711 | } |
| 3712 | |||
| 3713 | /* If we're inside while-no-input, and this event qualifies | ||
| 3714 | as input, set quit-flag to cause an interrupt. */ | ||
| 3715 | if (!NILP (Vthrow_on_input) | ||
| 3716 | && event->kind != FOCUS_IN_EVENT | ||
| 3717 | && event->kind != HELP_EVENT | ||
| 3718 | && event->kind != DEICONIFY_EVENT) | ||
| 3719 | { | ||
| 3720 | Vquit_flag = Vthrow_on_input; | ||
| 3721 | /* If we're inside a function that wants immediate quits, | ||
| 3722 | do it now. */ | ||
| 3723 | if (immediate_quit && NILP (Vinhibit_quit)) | ||
| 3724 | { | ||
| 3725 | immediate_quit = 0; | ||
| 3726 | sigfree (); | ||
| 3727 | QUIT; | ||
| 3728 | } | ||
| 3729 | } | ||
| 3707 | } | 3730 | } |
| 3708 | 3731 | ||
| 3709 | 3732 | ||
| @@ -6817,30 +6840,16 @@ input_available_signal (signo) | |||
| 6817 | sigisheld (SIGIO); | 6840 | sigisheld (SIGIO); |
| 6818 | #endif | 6841 | #endif |
| 6819 | 6842 | ||
| 6820 | if (input_available_clear_time) | ||
| 6821 | EMACS_SET_SECS_USECS (*input_available_clear_time, 0, 0); | ||
| 6822 | |||
| 6823 | #ifdef SYNC_INPUT | 6843 | #ifdef SYNC_INPUT |
| 6824 | interrupt_input_pending = 1; | 6844 | interrupt_input_pending = 1; |
| 6825 | #else | 6845 | #else |
| 6846 | SIGNAL_THREAD_CHECK (signo); | ||
| 6847 | #endif | ||
| 6848 | |||
| 6849 | if (input_available_clear_time) | ||
| 6850 | EMACS_SET_SECS_USECS (*input_available_clear_time, 0, 0); | ||
| 6826 | 6851 | ||
| 6827 | # if !defined (SYSTEM_MALLOC) && defined (HAVE_GTK_AND_PTHREAD) | 6852 | #ifndef SYNC_INPUT |
| 6828 | extern pthread_t main_thread; | ||
| 6829 | if (pthread_self () != main_thread) | ||
| 6830 | { | ||
| 6831 | /* POSIX says any thread can receive the signal. On GNU/Linux that is | ||
| 6832 | not true, but for other systems (FreeBSD at least) it is. So direct | ||
| 6833 | the signal to the correct thread and block it from this thread. */ | ||
| 6834 | sigset_t new_mask; | ||
| 6835 | |||
| 6836 | sigemptyset (&new_mask); | ||
| 6837 | sigaddset (&new_mask, SIGIO); | ||
| 6838 | pthread_sigmask (SIG_BLOCK, &new_mask, 0); | ||
| 6839 | pthread_kill (main_thread, SIGIO); | ||
| 6840 | return; | ||
| 6841 | } | ||
| 6842 | # endif /* HAVE_GTK_AND_PTHREAD */ | ||
| 6843 | |||
| 6844 | handle_async_input (); | 6853 | handle_async_input (); |
| 6845 | #endif | 6854 | #endif |
| 6846 | 6855 | ||
| @@ -10255,6 +10264,7 @@ interrupt_signal (signalnum) /* If we don't have an argument, */ | |||
| 10255 | } | 10264 | } |
| 10256 | #endif /* USG */ | 10265 | #endif /* USG */ |
| 10257 | 10266 | ||
| 10267 | SIGNAL_THREAD_CHECK (signalnum); | ||
| 10258 | cancel_echoing (); | 10268 | cancel_echoing (); |
| 10259 | 10269 | ||
| 10260 | if (!NILP (Vquit_flag) | 10270 | if (!NILP (Vquit_flag) |
| @@ -11375,6 +11385,12 @@ Used during Emacs' startup. */); | |||
| 11375 | doc: /* *How long to display an echo-area message when the minibuffer is active. | 11385 | doc: /* *How long to display an echo-area message when the minibuffer is active. |
| 11376 | If the value is not a number, such messages don't time out. */); | 11386 | If the value is not a number, such messages don't time out. */); |
| 11377 | Vminibuffer_message_timeout = make_number (2); | 11387 | Vminibuffer_message_timeout = make_number (2); |
| 11388 | |||
| 11389 | DEFVAR_LISP ("throw-on-input", &Vthrow_on_input, | ||
| 11390 | doc: /* If non-nil, any keyboard input throws to this symbol. | ||
| 11391 | The value of that variable is passed to `quit-flag' and later causes a | ||
| 11392 | peculiar kind of quitting. */); | ||
| 11393 | Vthrow_on_input = Qnil; | ||
| 11378 | } | 11394 | } |
| 11379 | 11395 | ||
| 11380 | void | 11396 | void |
diff --git a/src/lisp.h b/src/lisp.h index 3f49ac546cc..a6ea85b00c1 100644 --- a/src/lisp.h +++ b/src/lisp.h | |||
| @@ -3090,7 +3090,7 @@ extern void syms_of_macros P_ ((void)); | |||
| 3090 | /* defined in undo.c */ | 3090 | /* defined in undo.c */ |
| 3091 | extern Lisp_Object Qinhibit_read_only; | 3091 | extern Lisp_Object Qinhibit_read_only; |
| 3092 | EXFUN (Fundo_boundary, 0); | 3092 | EXFUN (Fundo_boundary, 0); |
| 3093 | extern Lisp_Object truncate_undo_list P_ ((Lisp_Object, int, int, int)); | 3093 | extern void truncate_undo_list P_ ((struct buffer *)); |
| 3094 | extern void record_marker_adjustment P_ ((Lisp_Object, int)); | 3094 | extern void record_marker_adjustment P_ ((Lisp_Object, int)); |
| 3095 | extern void record_insert P_ ((int, int)); | 3095 | extern void record_insert P_ ((int, int)); |
| 3096 | extern void record_delete P_ ((int, Lisp_Object)); | 3096 | extern void record_delete P_ ((int, Lisp_Object)); |
| @@ -3099,6 +3099,7 @@ extern void record_change P_ ((int, int)); | |||
| 3099 | extern void record_property_change P_ ((int, int, Lisp_Object, Lisp_Object, | 3099 | extern void record_property_change P_ ((int, int, Lisp_Object, Lisp_Object, |
| 3100 | Lisp_Object)); | 3100 | Lisp_Object)); |
| 3101 | extern void syms_of_undo P_ ((void)); | 3101 | extern void syms_of_undo P_ ((void)); |
| 3102 | extern Lisp_Object Vundo_outer_limit; | ||
| 3102 | 3103 | ||
| 3103 | /* defined in textprop.c */ | 3104 | /* defined in textprop.c */ |
| 3104 | extern Lisp_Object Qfont, Qmouse_face; | 3105 | extern Lisp_Object Qfont, Qmouse_face; |
diff --git a/src/macterm.c b/src/macterm.c index ba19e0fbc31..4e9981da8b8 100644 --- a/src/macterm.c +++ b/src/macterm.c | |||
| @@ -5997,7 +5997,7 @@ mac_to_x_fontname (name, size, style, scriptcode, encoding_base) | |||
| 5997 | strcpy(cs, "mac-cyrillic"); | 5997 | strcpy(cs, "mac-cyrillic"); |
| 5998 | break; | 5998 | break; |
| 5999 | case kTextEncodingMacCentralEurRoman: | 5999 | case kTextEncodingMacCentralEurRoman: |
| 6000 | strcpy(cs, "mac-centraleuropean"); | 6000 | strcpy(cs, "mac-centraleurroman"); |
| 6001 | break; | 6001 | break; |
| 6002 | case kTextEncodingMacSymbol: | 6002 | case kTextEncodingMacSymbol: |
| 6003 | case kTextEncodingMacDingbats: | 6003 | case kTextEncodingMacDingbats: |
| @@ -6055,7 +6055,7 @@ x_font_name_to_mac_font_name (char *xf, char *mf) | |||
| 6055 | coding_system = Qeuc_kr; | 6055 | coding_system = Qeuc_kr; |
| 6056 | else if (strcmp (cs, "mac-roman") == 0 | 6056 | else if (strcmp (cs, "mac-roman") == 0 |
| 6057 | || strcmp (cs, "mac-cyrillic") == 0 | 6057 | || strcmp (cs, "mac-cyrillic") == 0 |
| 6058 | || strcmp (cs, "mac-centraleuropean") == 0 | 6058 | || strcmp (cs, "mac-centraleurroman") == 0 |
| 6059 | || strcmp (cs, "adobe-fontspecific") == 0) | 6059 | || strcmp (cs, "adobe-fontspecific") == 0) |
| 6060 | strcpy (mf, family); | 6060 | strcpy (mf, family); |
| 6061 | else | 6061 | else |
| @@ -6300,6 +6300,28 @@ static int xlfd_scalable_fields[] = | |||
| 6300 | }; | 6300 | }; |
| 6301 | 6301 | ||
| 6302 | static Lisp_Object | 6302 | static Lisp_Object |
| 6303 | mac_c_string_match (regexp, string, nonspecial, exact) | ||
| 6304 | Lisp_Object regexp; | ||
| 6305 | const char *string, *nonspecial; | ||
| 6306 | int exact; | ||
| 6307 | { | ||
| 6308 | if (exact) | ||
| 6309 | { | ||
| 6310 | if (strcmp (string, nonspecial) == 0) | ||
| 6311 | return build_string (string); | ||
| 6312 | } | ||
| 6313 | else if (strstr (string, nonspecial)) | ||
| 6314 | { | ||
| 6315 | Lisp_Object str = build_string (string); | ||
| 6316 | |||
| 6317 | if (fast_string_match (regexp, str) >= 0) | ||
| 6318 | return str; | ||
| 6319 | } | ||
| 6320 | |||
| 6321 | return Qnil; | ||
| 6322 | } | ||
| 6323 | |||
| 6324 | static Lisp_Object | ||
| 6303 | mac_do_list_fonts (pattern, maxnames) | 6325 | mac_do_list_fonts (pattern, maxnames) |
| 6304 | char *pattern; | 6326 | char *pattern; |
| 6305 | int maxnames; | 6327 | int maxnames; |
| @@ -6310,6 +6332,8 @@ mac_do_list_fonts (pattern, maxnames) | |||
| 6310 | char scaled[256]; | 6332 | char scaled[256]; |
| 6311 | char *ptr; | 6333 | char *ptr; |
| 6312 | int scl_val[XLFD_SCL_LAST], *field, *val; | 6334 | int scl_val[XLFD_SCL_LAST], *field, *val; |
| 6335 | char *longest_start, *cur_start, *nonspecial; | ||
| 6336 | int longest_len, cur_len, exact; | ||
| 6313 | 6337 | ||
| 6314 | for (i = 0; i < XLFD_SCL_LAST; i++) | 6338 | for (i = 0; i < XLFD_SCL_LAST; i++) |
| 6315 | scl_val[i] = -1; | 6339 | scl_val[i] = -1; |
| @@ -6367,34 +6391,66 @@ mac_do_list_fonts (pattern, maxnames) | |||
| 6367 | ptr = regex; | 6391 | ptr = regex; |
| 6368 | *ptr++ = '^'; | 6392 | *ptr++ = '^'; |
| 6369 | 6393 | ||
| 6370 | /* Turn pattern into a regexp and do a regexp match. */ | 6394 | longest_start = cur_start = ptr; |
| 6395 | longest_len = cur_len = 0; | ||
| 6396 | exact = 1; | ||
| 6397 | |||
| 6398 | /* Turn pattern into a regexp and do a regexp match. Also find the | ||
| 6399 | longest substring containing no special characters. */ | ||
| 6371 | for (; *pattern; pattern++) | 6400 | for (; *pattern; pattern++) |
| 6372 | { | 6401 | { |
| 6373 | if (*pattern == '?') | 6402 | if (*pattern == '?' || *pattern == '*') |
| 6374 | *ptr++ = '.'; | 6403 | { |
| 6375 | else if (*pattern == '*') | 6404 | if (cur_len > longest_len) |
| 6376 | { | 6405 | { |
| 6377 | *ptr++ = '.'; | 6406 | longest_start = cur_start; |
| 6378 | *ptr++ = '*'; | 6407 | longest_len = cur_len; |
| 6379 | } | 6408 | } |
| 6409 | cur_len = 0; | ||
| 6410 | exact = 0; | ||
| 6411 | |||
| 6412 | if (*pattern == '?') | ||
| 6413 | *ptr++ = '.'; | ||
| 6414 | else /* if (*pattern == '*') */ | ||
| 6415 | { | ||
| 6416 | *ptr++ = '.'; | ||
| 6417 | *ptr++ = '*'; | ||
| 6418 | } | ||
| 6419 | } | ||
| 6380 | else | 6420 | else |
| 6381 | *ptr++ = tolower (*pattern); | 6421 | { |
| 6422 | if (cur_len == 0) | ||
| 6423 | cur_start = ptr; | ||
| 6424 | cur_len++; | ||
| 6425 | |||
| 6426 | *ptr++ = tolower (*pattern); | ||
| 6427 | } | ||
| 6382 | } | 6428 | } |
| 6429 | |||
| 6430 | if (cur_len > longest_len) | ||
| 6431 | { | ||
| 6432 | longest_start = cur_start; | ||
| 6433 | longest_len = cur_len; | ||
| 6434 | } | ||
| 6435 | |||
| 6383 | *ptr = '$'; | 6436 | *ptr = '$'; |
| 6384 | *(ptr + 1) = '\0'; | 6437 | *(ptr + 1) = '\0'; |
| 6385 | 6438 | ||
| 6439 | nonspecial = xmalloc (longest_len + 1); | ||
| 6440 | strncpy (nonspecial, longest_start, longest_len); | ||
| 6441 | nonspecial[longest_len] = '\0'; | ||
| 6442 | |||
| 6386 | pattern_regex = build_string (regex); | 6443 | pattern_regex = build_string (regex); |
| 6387 | 6444 | ||
| 6388 | for (i = 0; i < font_name_count; i++) | 6445 | for (i = 0; i < font_name_count; i++) |
| 6389 | { | 6446 | { |
| 6390 | fontname = build_string (font_name_table[i]); | 6447 | fontname = mac_c_string_match (pattern_regex, font_name_table[i], |
| 6391 | if (fast_string_match (pattern_regex, fontname) >= 0) | 6448 | nonspecial, exact); |
| 6449 | if (!NILP (fontname)) | ||
| 6392 | { | 6450 | { |
| 6393 | font_list = Fcons (fontname, font_list); | 6451 | font_list = Fcons (fontname, font_list); |
| 6394 | 6452 | if (exact || maxnames > 0 && ++n_fonts >= maxnames) | |
| 6395 | n_fonts++; | 6453 | break; |
| 6396 | if (maxnames > 0 && n_fonts >= maxnames) | ||
| 6397 | break; | ||
| 6398 | } | 6454 | } |
| 6399 | else if (scl_val[XLFD_SCL_PIXEL_SIZE] > 0 | 6455 | else if (scl_val[XLFD_SCL_PIXEL_SIZE] > 0 |
| 6400 | && (ptr = strstr (font_name_table[i], "-0-0-75-75-m-0-"))) | 6456 | && (ptr = strstr (font_name_table[i], "-0-0-75-75-m-0-"))) |
| @@ -6408,17 +6464,19 @@ mac_do_list_fonts (pattern, maxnames) | |||
| 6408 | scl_val[XLFD_SCL_POINT_SIZE], | 6464 | scl_val[XLFD_SCL_POINT_SIZE], |
| 6409 | scl_val[XLFD_SCL_AVGWIDTH], | 6465 | scl_val[XLFD_SCL_AVGWIDTH], |
| 6410 | ptr + sizeof ("-0-0-75-75-m-0-") - 1); | 6466 | ptr + sizeof ("-0-0-75-75-m-0-") - 1); |
| 6411 | fontname = build_string (scaled); | 6467 | fontname = mac_c_string_match (pattern_regex, scaled, |
| 6412 | if (fast_string_match (pattern_regex, fontname) >= 0) | 6468 | nonspecial, exact); |
| 6469 | if (!NILP (fontname)) | ||
| 6413 | { | 6470 | { |
| 6414 | font_list = Fcons (fontname, font_list); | 6471 | font_list = Fcons (fontname, font_list); |
| 6415 | 6472 | if (exact || maxnames > 0 && ++n_fonts >= maxnames) | |
| 6416 | n_fonts++; | ||
| 6417 | if (maxnames > 0 && n_fonts >= maxnames) | ||
| 6418 | break; | 6473 | break; |
| 6419 | } | 6474 | } |
| 6420 | } | 6475 | } |
| 6421 | } | 6476 | } |
| 6477 | |||
| 6478 | xfree (nonspecial); | ||
| 6479 | |||
| 6422 | return font_list; | 6480 | return font_list; |
| 6423 | } | 6481 | } |
| 6424 | 6482 | ||
diff --git a/src/process.c b/src/process.c index 699c99cdcb8..6da7d73594d 100644 --- a/src/process.c +++ b/src/process.c | |||
| @@ -5109,6 +5109,7 @@ Lisp_Object process_sent_to; | |||
| 5109 | SIGTYPE | 5109 | SIGTYPE |
| 5110 | send_process_trap () | 5110 | send_process_trap () |
| 5111 | { | 5111 | { |
| 5112 | SIGNAL_THREAD_CHECK (SIGPIPE); | ||
| 5112 | #ifdef BSD4_1 | 5113 | #ifdef BSD4_1 |
| 5113 | sigrelse (SIGPIPE); | 5114 | sigrelse (SIGPIPE); |
| 5114 | sigrelse (SIGALRM); | 5115 | sigrelse (SIGALRM); |
| @@ -6144,6 +6145,8 @@ sigchld_handler (signo) | |||
| 6144 | register struct Lisp_Process *p; | 6145 | register struct Lisp_Process *p; |
| 6145 | extern EMACS_TIME *input_available_clear_time; | 6146 | extern EMACS_TIME *input_available_clear_time; |
| 6146 | 6147 | ||
| 6148 | SIGNAL_THREAD_CHECK (signo); | ||
| 6149 | |||
| 6147 | #ifdef BSD4_1 | 6150 | #ifdef BSD4_1 |
| 6148 | extern int sigheld; | 6151 | extern int sigheld; |
| 6149 | sigheld |= sigbit (SIGCHLD); | 6152 | sigheld |= sigbit (SIGCHLD); |
diff --git a/src/regex.c b/src/regex.c index f21955a3c0e..e43fc2dc0aa 100644 --- a/src/regex.c +++ b/src/regex.c | |||
| @@ -6096,7 +6096,7 @@ re_match_2_internal (bufp, string1, size1, string2, size2, pos, regs, stop) | |||
| 6096 | PREFETCH_NOLIMIT (); | 6096 | PREFETCH_NOLIMIT (); |
| 6097 | c2 = RE_STRING_CHAR (d, dend - d); | 6097 | c2 = RE_STRING_CHAR (d, dend - d); |
| 6098 | #ifdef emacs | 6098 | #ifdef emacs |
| 6099 | UPDATE_SYNTAX_TABLE_FORWARD (charpos); | 6099 | UPDATE_SYNTAX_TABLE_FORWARD (charpos + 1); |
| 6100 | #endif | 6100 | #endif |
| 6101 | s2 = SYNTAX (c2); | 6101 | s2 = SYNTAX (c2); |
| 6102 | 6102 | ||
diff --git a/src/sysdep.c b/src/sysdep.c index 6284774d092..1884c0ccffa 100644 --- a/src/sysdep.c +++ b/src/sysdep.c | |||
| @@ -2472,6 +2472,7 @@ select_alarm () | |||
| 2472 | #else /* not BSD4_1 */ | 2472 | #else /* not BSD4_1 */ |
| 2473 | signal (SIGALRM, SIG_IGN); | 2473 | signal (SIGALRM, SIG_IGN); |
| 2474 | #endif /* not BSD4_1 */ | 2474 | #endif /* not BSD4_1 */ |
| 2475 | SIGNAL_THREAD_CHECK (SIGALRM); | ||
| 2475 | if (read_alarm_should_throw) | 2476 | if (read_alarm_should_throw) |
| 2476 | longjmp (read_alarm_throw, 1); | 2477 | longjmp (read_alarm_throw, 1); |
| 2477 | } | 2478 | } |
diff --git a/src/syssignal.h b/src/syssignal.h index cef71f7459a..04e84df1a3a 100644 --- a/src/syssignal.h +++ b/src/syssignal.h | |||
| @@ -20,6 +20,11 @@ Boston, MA 02111-1307, USA. */ | |||
| 20 | 20 | ||
| 21 | extern void init_signals P_ ((void)); | 21 | extern void init_signals P_ ((void)); |
| 22 | 22 | ||
| 23 | #ifdef HAVE_GTK_AND_PTHREAD | ||
| 24 | #include <pthread.h> | ||
| 25 | extern pthread_t main_thread; | ||
| 26 | #endif | ||
| 27 | |||
| 23 | #ifdef POSIX_SIGNALS | 28 | #ifdef POSIX_SIGNALS |
| 24 | 29 | ||
| 25 | /* Don't #include <signal.h>. That header should always be #included | 30 | /* Don't #include <signal.h>. That header should always be #included |
| @@ -198,5 +203,27 @@ extern SIGMASKTYPE sigprocmask_set; | |||
| 198 | char *strsignal (); | 203 | char *strsignal (); |
| 199 | #endif | 204 | #endif |
| 200 | 205 | ||
| 206 | #ifdef HAVE_GTK_AND_PTHREAD | ||
| 207 | #define SIGNAL_THREAD_CHECK(signo) \ | ||
| 208 | do { \ | ||
| 209 | if (pthread_self () != main_thread) \ | ||
| 210 | { \ | ||
| 211 | /* POSIX says any thread can receive the signal. On GNU/Linux \ | ||
| 212 | that is not true, but for other systems (FreeBSD at least) \ | ||
| 213 | it is. So direct the signal to the correct thread and block \ | ||
| 214 | it from this thread. */ \ | ||
| 215 | sigset_t new_mask; \ | ||
| 216 | \ | ||
| 217 | sigemptyset (&new_mask); \ | ||
| 218 | sigaddset (&new_mask, signo); \ | ||
| 219 | pthread_sigmask (SIG_BLOCK, &new_mask, 0); \ | ||
| 220 | pthread_kill (main_thread, signo); \ | ||
| 221 | return; \ | ||
| 222 | } \ | ||
| 223 | } while (0) | ||
| 224 | |||
| 225 | #else /* not HAVE_GTK_AND_PTHREAD */ | ||
| 226 | #define SIGNAL_THREAD_CHECK(signo) | ||
| 227 | #endif /* not HAVE_GTK_AND_PTHREAD */ | ||
| 201 | /* arch-tag: 4580e86a-340d-4574-9e11-a742b6e1a152 | 228 | /* arch-tag: 4580e86a-340d-4574-9e11-a742b6e1a152 |
| 202 | (do not change this comment) */ | 229 | (do not change this comment) */ |
diff --git a/src/undo.c b/src/undo.c index 9fdc46a3b13..df4b8d08cd6 100644 --- a/src/undo.c +++ b/src/undo.c | |||
| @@ -24,6 +24,17 @@ Boston, MA 02111-1307, USA. */ | |||
| 24 | #include "buffer.h" | 24 | #include "buffer.h" |
| 25 | #include "commands.h" | 25 | #include "commands.h" |
| 26 | 26 | ||
| 27 | /* Limits controlling how much undo information to keep. */ | ||
| 28 | |||
| 29 | EMACS_INT undo_limit; | ||
| 30 | EMACS_INT undo_strong_limit; | ||
| 31 | |||
| 32 | Lisp_Object Vundo_outer_limit; | ||
| 33 | |||
| 34 | /* Function to call when undo_outer_limit is exceeded. */ | ||
| 35 | |||
| 36 | Lisp_Object Vundo_outer_limit_function; | ||
| 37 | |||
| 27 | /* Last buffer for which undo information was recorded. */ | 38 | /* Last buffer for which undo information was recorded. */ |
| 28 | Lisp_Object last_undo_buffer; | 39 | Lisp_Object last_undo_buffer; |
| 29 | 40 | ||
| @@ -291,31 +302,35 @@ but another undo command will undo to the previous boundary. */) | |||
| 291 | } | 302 | } |
| 292 | 303 | ||
| 293 | /* At garbage collection time, make an undo list shorter at the end, | 304 | /* At garbage collection time, make an undo list shorter at the end, |
| 294 | returning the truncated list. | 305 | returning the truncated list. How this is done depends on the |
| 295 | MINSIZE, MAXSIZE and LIMITSIZE are the limits on size allowed, | 306 | variables undo-limit, undo-strong-limit and undo-outer-limit. |
| 296 | as described below. | 307 | In some cases this works by calling undo-outer-limit-function. */ |
| 297 | In practice, these are the values of undo-limit, | 308 | |
| 298 | undo-strong-limit, and undo-outer-limit. */ | 309 | void |
| 299 | 310 | truncate_undo_list (b) | |
| 300 | Lisp_Object | 311 | struct buffer *b; |
| 301 | truncate_undo_list (list, minsize, maxsize, limitsize) | ||
| 302 | Lisp_Object list; | ||
| 303 | int minsize, maxsize, limitsize; | ||
| 304 | { | 312 | { |
| 313 | Lisp_Object list; | ||
| 305 | Lisp_Object prev, next, last_boundary; | 314 | Lisp_Object prev, next, last_boundary; |
| 306 | int size_so_far = 0; | 315 | int size_so_far = 0; |
| 307 | 316 | ||
| 317 | /* Make sure that calling undo-outer-limit-function | ||
| 318 | won't cause another GC. */ | ||
| 319 | int count = inhibit_garbage_collection (); | ||
| 320 | |||
| 321 | /* Make the buffer current to get its local values of variables such | ||
| 322 | as undo_limit. Also so that Vundo_outer_limit_function can | ||
| 323 | tell which buffer to operate on. */ | ||
| 324 | record_unwind_protect (set_buffer_if_live, Fcurrent_buffer ()); | ||
| 325 | set_buffer_internal (b); | ||
| 326 | |||
| 327 | list = b->undo_list; | ||
| 328 | |||
| 308 | prev = Qnil; | 329 | prev = Qnil; |
| 309 | next = list; | 330 | next = list; |
| 310 | last_boundary = Qnil; | 331 | last_boundary = Qnil; |
| 311 | 332 | ||
| 312 | /* Always preserve at least the most recent undo record | 333 | /* If the first element is an undo boundary, skip past it. */ |
| 313 | unless it is really horribly big. | ||
| 314 | If the first element is an undo boundary, skip past it. | ||
| 315 | |||
| 316 | Skip, skip, skip the undo, skip, skip, skip the undo, | ||
| 317 | Skip, skip, skip the undo, skip to the undo bound'ry. | ||
| 318 | (Get it? "Skip to my Loo?") */ | ||
| 319 | if (CONSP (next) && NILP (XCAR (next))) | 334 | if (CONSP (next) && NILP (XCAR (next))) |
| 320 | { | 335 | { |
| 321 | /* Add in the space occupied by this element and its chain link. */ | 336 | /* Add in the space occupied by this element and its chain link. */ |
| @@ -326,6 +341,12 @@ truncate_undo_list (list, minsize, maxsize, limitsize) | |||
| 326 | next = XCDR (next); | 341 | next = XCDR (next); |
| 327 | } | 342 | } |
| 328 | 343 | ||
| 344 | /* Always preserve at least the most recent undo record | ||
| 345 | unless it is really horribly big. | ||
| 346 | |||
| 347 | Skip, skip, skip the undo, skip, skip, skip the undo, | ||
| 348 | Skip, skip, skip the undo, skip to the undo bound'ry. */ | ||
| 349 | |||
| 329 | while (CONSP (next) && ! NILP (XCAR (next))) | 350 | while (CONSP (next) && ! NILP (XCAR (next))) |
| 330 | { | 351 | { |
| 331 | Lisp_Object elt; | 352 | Lisp_Object elt; |
| @@ -341,35 +362,53 @@ truncate_undo_list (list, minsize, maxsize, limitsize) | |||
| 341 | + SCHARS (XCAR (elt))); | 362 | + SCHARS (XCAR (elt))); |
| 342 | } | 363 | } |
| 343 | 364 | ||
| 344 | /* If we reach LIMITSIZE before the first boundary, | ||
| 345 | we're heading for memory full, so truncate the list to nothing. */ | ||
| 346 | if (size_so_far > limitsize) | ||
| 347 | return Qnil; | ||
| 348 | |||
| 349 | /* Advance to next element. */ | 365 | /* Advance to next element. */ |
| 350 | prev = next; | 366 | prev = next; |
| 351 | next = XCDR (next); | 367 | next = XCDR (next); |
| 352 | } | 368 | } |
| 353 | 369 | ||
| 370 | /* If by the first boundary we have already passed undo_outer_limit, | ||
| 371 | we're heading for memory full, so offer to clear out the list. */ | ||
| 372 | if (INTEGERP (Vundo_outer_limit) | ||
| 373 | && size_so_far > XINT (Vundo_outer_limit) | ||
| 374 | && !NILP (Vundo_outer_limit_function)) | ||
| 375 | { | ||
| 376 | Lisp_Object temp = last_undo_buffer; | ||
| 377 | |||
| 378 | /* Normally the function this calls is undo-outer-limit-truncate. */ | ||
| 379 | if (! NILP (call1 (Vundo_outer_limit_function, | ||
| 380 | make_number (size_so_far)))) | ||
| 381 | { | ||
| 382 | /* The function is responsible for making | ||
| 383 | any desired changes in buffer-undo-list. */ | ||
| 384 | unbind_to (count, Qnil); | ||
| 385 | return; | ||
| 386 | } | ||
| 387 | /* That function probably used the minibuffer, and if so, that | ||
| 388 | changed last_undo_buffer. Change it back so that we don't | ||
| 389 | force next change to make an undo boundary here. */ | ||
| 390 | last_undo_buffer = temp; | ||
| 391 | } | ||
| 392 | |||
| 354 | if (CONSP (next)) | 393 | if (CONSP (next)) |
| 355 | last_boundary = prev; | 394 | last_boundary = prev; |
| 356 | 395 | ||
| 357 | /* Keep more if it fits. */ | 396 | /* Keep additional undo data, if it fits in the limits. */ |
| 358 | while (CONSP (next)) | 397 | while (CONSP (next)) |
| 359 | { | 398 | { |
| 360 | Lisp_Object elt; | 399 | Lisp_Object elt; |
| 361 | elt = XCAR (next); | 400 | elt = XCAR (next); |
| 362 | 401 | ||
| 363 | /* When we get to a boundary, decide whether to truncate | 402 | /* When we get to a boundary, decide whether to truncate |
| 364 | either before or after it. The lower threshold, MINSIZE, | 403 | either before or after it. The lower threshold, undo_limit, |
| 365 | tells us to truncate after it. If its size pushes past | 404 | tells us to truncate after it. If its size pushes past |
| 366 | the higher threshold MAXSIZE as well, we truncate before it. */ | 405 | the higher threshold undo_strong_limit, we truncate before it. */ |
| 367 | if (NILP (elt)) | 406 | if (NILP (elt)) |
| 368 | { | 407 | { |
| 369 | if (size_so_far > maxsize) | 408 | if (size_so_far > undo_strong_limit) |
| 370 | break; | 409 | break; |
| 371 | last_boundary = prev; | 410 | last_boundary = prev; |
| 372 | if (size_so_far > minsize) | 411 | if (size_so_far > undo_limit) |
| 373 | break; | 412 | break; |
| 374 | } | 413 | } |
| 375 | 414 | ||
| @@ -390,16 +429,15 @@ truncate_undo_list (list, minsize, maxsize, limitsize) | |||
| 390 | 429 | ||
| 391 | /* If we scanned the whole list, it is short enough; don't change it. */ | 430 | /* If we scanned the whole list, it is short enough; don't change it. */ |
| 392 | if (NILP (next)) | 431 | if (NILP (next)) |
| 393 | return list; | 432 | ; |
| 394 | |||
| 395 | /* Truncate at the boundary where we decided to truncate. */ | 433 | /* Truncate at the boundary where we decided to truncate. */ |
| 396 | if (!NILP (last_boundary)) | 434 | else if (!NILP (last_boundary)) |
| 397 | { | 435 | XSETCDR (last_boundary, Qnil); |
| 398 | XSETCDR (last_boundary, Qnil); | 436 | /* There's nothing we decided to keep, so clear it out. */ |
| 399 | return list; | ||
| 400 | } | ||
| 401 | else | 437 | else |
| 402 | return Qnil; | 438 | b->undo_list = Qnil; |
| 439 | |||
| 440 | unbind_to (count, Qnil); | ||
| 403 | } | 441 | } |
| 404 | 442 | ||
| 405 | DEFUN ("primitive-undo", Fprimitive_undo, Sprimitive_undo, 2, 2, 0, | 443 | DEFUN ("primitive-undo", Fprimitive_undo, Sprimitive_undo, 2, 2, 0, |
| @@ -563,6 +601,54 @@ syms_of_undo () | |||
| 563 | 601 | ||
| 564 | defsubr (&Sprimitive_undo); | 602 | defsubr (&Sprimitive_undo); |
| 565 | defsubr (&Sundo_boundary); | 603 | defsubr (&Sundo_boundary); |
| 604 | |||
| 605 | DEFVAR_INT ("undo-limit", &undo_limit, | ||
| 606 | doc: /* Keep no more undo information once it exceeds this size. | ||
| 607 | This limit is applied when garbage collection happens. | ||
| 608 | When a previous command increases the total undo list size past this | ||
| 609 | value, the earlier commands that came before it are forgotten. | ||
| 610 | |||
| 611 | The size is counted as the number of bytes occupied, | ||
| 612 | which includes both saved text and other data. */); | ||
| 613 | undo_limit = 20000; | ||
| 614 | |||
| 615 | DEFVAR_INT ("undo-strong-limit", &undo_strong_limit, | ||
| 616 | doc: /* Don't keep more than this much size of undo information. | ||
| 617 | This limit is applied when garbage collection happens. | ||
| 618 | When a previous command increases the total undo list size past this | ||
| 619 | value, that command and the earlier commands that came before it are forgotten. | ||
| 620 | However, the most recent buffer-modifying command's undo info | ||
| 621 | is never discarded for this reason. | ||
| 622 | |||
| 623 | The size is counted as the number of bytes occupied, | ||
| 624 | which includes both saved text and other data. */); | ||
| 625 | undo_strong_limit = 30000; | ||
| 626 | |||
| 627 | DEFVAR_LISP ("undo-outer-limit", &Vundo_outer_limit, | ||
| 628 | doc: /* Outer limit on size of undo information for one command. | ||
| 629 | At garbage collection time, if the current command has produced | ||
| 630 | more than this much undo information, it asks you whether to delete | ||
| 631 | the information. This is a last-ditch limit to prevent memory overflow. | ||
| 632 | |||
| 633 | The size is counted as the number of bytes occupied, | ||
| 634 | which includes both saved text and other data. | ||
| 635 | |||
| 636 | In fact, this calls the function which is the value of | ||
| 637 | `undo-outer-limit-function' with one argument, the size. | ||
| 638 | The text above describes the behavior of the function | ||
| 639 | that variable usually specifies. */); | ||
| 640 | Vundo_outer_limit = make_number (300000); | ||
| 641 | |||
| 642 | DEFVAR_LISP ("undo-outer-limit-function", &Vundo_outer_limit_function, | ||
| 643 | doc: /* Function to call when an undo list exceeds `undo-outer-limit'. | ||
| 644 | This function is called with one argument, the current undo list size | ||
| 645 | for the most recent command (since the last undo boundary). | ||
| 646 | If the function returns t, that means truncation has been fully handled. | ||
| 647 | If it returns nil, the other forms of truncation are done. | ||
| 648 | |||
| 649 | Garbage collection is inhibited around the call to this function, | ||
| 650 | so it must make sure not to do a lot of consing. */); | ||
| 651 | Vundo_outer_limit_function = Qnil; | ||
| 566 | } | 652 | } |
| 567 | 653 | ||
| 568 | /* arch-tag: d546ee01-4aed-4ffb-bb8b-eefaae50d38a | 654 | /* arch-tag: d546ee01-4aed-4ffb-bb8b-eefaae50d38a |
diff --git a/src/xdisp.c b/src/xdisp.c index ba6ee253d79..62efd4cac6c 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -5050,6 +5050,21 @@ get_next_display_element (it) | |||
| 5050 | XSETINT (it->ctl_chars[1], g); | 5050 | XSETINT (it->ctl_chars[1], g); |
| 5051 | ctl_len = 2; | 5051 | ctl_len = 2; |
| 5052 | } | 5052 | } |
| 5053 | else if (it->c == 0x8a0 || it->c == 0x8ad) | ||
| 5054 | { | ||
| 5055 | /* Set IT->ctl_chars[0] to the glyph for `\\'. */ | ||
| 5056 | if (it->dp | ||
| 5057 | && INTEGERP (DISP_ESCAPE_GLYPH (it->dp)) | ||
| 5058 | && GLYPH_CHAR_VALID_P (XINT (DISP_ESCAPE_GLYPH (it->dp)))) | ||
| 5059 | g = XINT (DISP_ESCAPE_GLYPH (it->dp)); | ||
| 5060 | else | ||
| 5061 | g = FAST_MAKE_GLYPH ('\\', face_id); | ||
| 5062 | XSETINT (it->ctl_chars[0], g); | ||
| 5063 | |||
| 5064 | g = FAST_MAKE_GLYPH (it->c == 0x8ad ? '-' : ' ', face_id); | ||
| 5065 | XSETINT (it->ctl_chars[1], g); | ||
| 5066 | ctl_len = 2; | ||
| 5067 | } | ||
| 5053 | else | 5068 | else |
| 5054 | { | 5069 | { |
| 5055 | unsigned char str[MAX_MULTIBYTE_LENGTH]; | 5070 | unsigned char str[MAX_MULTIBYTE_LENGTH]; |
diff --git a/src/xselect.c b/src/xselect.c index c89347be2cd..38547ea6bbf 100644 --- a/src/xselect.c +++ b/src/xselect.c | |||
| @@ -2324,7 +2324,7 @@ DEFUN ("x-get-cut-buffer-internal", Fx_get_cut_buffer_internal, | |||
| 2324 | Fcons (x_atom_to_symbol (display, type), | 2324 | Fcons (x_atom_to_symbol (display, type), |
| 2325 | Fcons (make_number (format), Qnil)))); | 2325 | Fcons (make_number (format), Qnil)))); |
| 2326 | 2326 | ||
| 2327 | ret = (bytes ? make_string ((char *) data, bytes) : Qnil); | 2327 | ret = (bytes ? make_unibyte_string ((char *) data, bytes) : Qnil); |
| 2328 | /* Use xfree, not XFree, because x_get_window_property | 2328 | /* Use xfree, not XFree, because x_get_window_property |
| 2329 | calls xmalloc itself. */ | 2329 | calls xmalloc itself. */ |
| 2330 | xfree (data); | 2330 | xfree (data); |
diff --git a/src/xterm.c b/src/xterm.c index 2ffe7668516..05148608961 100644 --- a/src/xterm.c +++ b/src/xterm.c | |||
| @@ -4289,8 +4289,6 @@ xg_scroll_callback (widget, data) | |||
| 4289 | int part = -1, whole = 0, portion = 0; | 4289 | int part = -1, whole = 0, portion = 0; |
| 4290 | GtkAdjustment *adj = GTK_ADJUSTMENT (gtk_range_get_adjustment (widget)); | 4290 | GtkAdjustment *adj = GTK_ADJUSTMENT (gtk_range_get_adjustment (widget)); |
| 4291 | 4291 | ||
| 4292 | if (xg_ignore_gtk_scrollbar) return; | ||
| 4293 | |||
| 4294 | position = gtk_adjustment_get_value (adj); | 4292 | position = gtk_adjustment_get_value (adj); |
| 4295 | 4293 | ||
| 4296 | p = g_object_get_data (G_OBJECT (widget), XG_LAST_SB_DATA); | 4294 | p = g_object_get_data (G_OBJECT (widget), XG_LAST_SB_DATA); |
| @@ -4304,6 +4302,8 @@ xg_scroll_callback (widget, data) | |||
| 4304 | previous = *p; | 4302 | previous = *p; |
| 4305 | *p = position; | 4303 | *p = position; |
| 4306 | 4304 | ||
| 4305 | if (xg_ignore_gtk_scrollbar) return; | ||
| 4306 | |||
| 4307 | diff = (int) (position - previous); | 4307 | diff = (int) (position - previous); |
| 4308 | 4308 | ||
| 4309 | if (diff == (int) adj->step_increment) | 4309 | if (diff == (int) adj->step_increment) |
| @@ -4335,7 +4335,7 @@ xg_scroll_callback (widget, data) | |||
| 4335 | } | 4335 | } |
| 4336 | 4336 | ||
| 4337 | if (part >= 0) | 4337 | if (part >= 0) |
| 4338 | { | 4338 | { |
| 4339 | window_being_scrolled = bar->window; | 4339 | window_being_scrolled = bar->window; |
| 4340 | last_scroll_bar_part = part; | 4340 | last_scroll_bar_part = part; |
| 4341 | x_send_scroll_bar_event (bar->window, part, portion, whole); | 4341 | x_send_scroll_bar_event (bar->window, part, portion, whole); |