aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJuanma Barranquero2010-10-08 12:14:47 +0200
committerJuanma Barranquero2010-10-08 12:14:47 +0200
commit4628bef1eea0f60e846fe6b6591725aa92952de9 (patch)
tree9d137b8e0964c0b1ebc4afb4e743e35b807d048d
parent24ac444fbe5d76a7cf09a62b741b9e956ab90d3e (diff)
parent2b7c934285417d2eac7a3c603231d22ce7e212d8 (diff)
downloademacs-4628bef1eea0f60e846fe6b6591725aa92952de9.tar.gz
emacs-4628bef1eea0f60e846fe6b6591725aa92952de9.zip
Merge changes from emacs-23 branch.
-rw-r--r--doc/lispref/ChangeLog6
-rw-r--r--doc/misc/ChangeLog8
-rw-r--r--doc/misc/cl.texi54
-rw-r--r--doc/misc/eudc.texi36
-rw-r--r--lib-src/ChangeLog5
-rw-r--r--lib-src/emacsclient.c13
-rw-r--r--lisp/ChangeLog46
-rw-r--r--lisp/cedet/ChangeLog34
-rw-r--r--lisp/cedet/semantic/bovine/c-by.el115
-rw-r--r--lisp/cedet/semantic/bovine/el.el2
-rw-r--r--lisp/cedet/semantic/db-typecache.el2
-rw-r--r--lisp/cedet/semantic/fw.el2
-rw-r--r--lisp/cedet/semantic/grammar.el2
-rw-r--r--lisp/cedet/semantic/imenu.el2
-rw-r--r--lisp/cedet/semantic/lex-spp.el33
-rw-r--r--lisp/cedet/semantic/mru-bookmark.el12
-rw-r--r--lisp/cedet/semantic/tag.el3
-rw-r--r--lisp/dired.el2
-rw-r--r--lisp/dnd.el9
-rw-r--r--lisp/emacs-lisp/shadow.el15
-rw-r--r--lisp/minibuffer.el129
-rw-r--r--lisp/obsolete/cl-compat.el (renamed from lisp/emacs-lisp/cl-compat.el)9
-rw-r--r--lisp/obsolete/lmenu.el (renamed from lisp/emacs-lisp/lmenu.el)8
-rw-r--r--lisp/server.el2
-rw-r--r--lisp/vc/vc-svn.el2
-rw-r--r--src/ChangeLog51
-rw-r--r--src/buffer.c10
-rw-r--r--src/callproc.c21
-rw-r--r--src/coding.c48
-rw-r--r--src/coding.h1
-rw-r--r--src/dbusbind.c10
-rw-r--r--src/keyboard.c5
-rw-r--r--src/process.c36
-rw-r--r--src/xfont.c2
34 files changed, 492 insertions, 243 deletions
diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog
index 102866b0a82..8b93b2fb125 100644
--- a/doc/lispref/ChangeLog
+++ b/doc/lispref/ChangeLog
@@ -2458,6 +2458,12 @@
2458 2458
2459 * display.texi (Images): Delete redundant @findex. 2459 * display.texi (Images): Delete redundant @findex.
2460 2460
24612007-08-16 Stefan Monnier <monnier@iro.umontreal.ca>
2462
2463 * text.texi (Change Hooks): (after|before)-change-functions are no
2464 longer bound to nil while running; rather inhibit-modification-hooks
2465 is t.
2466
24612007-08-16 Richard Stallman <rms@gnu.org> 24672007-08-16 Richard Stallman <rms@gnu.org>
2462 2468
2463 * processes.texi (Asynchronous Processes): Clarify 2469 * processes.texi (Asynchronous Processes): Clarify
diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog
index 2971701b1f2..b06cfe1394b 100644
--- a/doc/misc/ChangeLog
+++ b/doc/misc/ChangeLog
@@ -1,3 +1,11 @@
12010-10-08 Glenn Morris <rgm@gnu.org>
2
3 * cl.texi (Organization, Installation, Old CL Compatibility):
4 Deprecate cl-compat for new code.
5 (Usage, Installation): Remove outdated information.
6
7 * eudc.texi (CCSO PH/QI, LDAP Requirements): Remove old information.
8
12010-10-07 Katsumi Yamaoka <yamaoka@jpl.org> 92010-10-07 Katsumi Yamaoka <yamaoka@jpl.org>
2 10
3 * gnus.texi (Gravatars): Document gnus-gravatar-too-ugly. 11 * gnus.texi (Gravatars): Document gnus-gravatar-too-ugly.
diff --git a/doc/misc/cl.texi b/doc/misc/cl.texi
index de57ff7d095..79038792a3e 100644
--- a/doc/misc/cl.texi
+++ b/doc/misc/cl.texi
@@ -163,19 +163,6 @@ include at the beginning:
163@end example 163@end example
164 164
165@noindent 165@noindent
166If you want to ensure that the new (Gillespie) version of @dfn{CL}
167is the one that is present, add an additional @code{(require 'cl-19)}
168call:
169
170@example
171(require 'cl)
172(require 'cl-19)
173@end example
174
175@noindent
176The second call will fail (with ``@file{cl-19.el} not found'') if
177the old @file{cl.el} package was in use.
178
179It is safe to arrange to load @dfn{CL} at all times, e.g., 166It is safe to arrange to load @dfn{CL} at all times, e.g.,
180in your @file{.emacs} file. But it's a good idea, for portability, 167in your @file{.emacs} file. But it's a good idea, for portability,
181to @code{(require 'cl)} in your code even if you do this. 168to @code{(require 'cl)} in your code even if you do this.
@@ -219,39 +206,26 @@ will take care of pulling in the other files when they are
219needed. 206needed.
220 207
221There is another file, @file{cl-compat.el}, which defines some 208There is another file, @file{cl-compat.el}, which defines some
222routines from the older @file{cl.el} package that are no longer 209routines from the older @file{cl.el} package that are not otherwise
223present in the new package. This includes internal routines 210present in the new package. This includes internal routines
224like @code{setelt} and @code{zip-lists}, deprecated features 211like @code{setelt} and @code{zip-lists}, deprecated features
225like @code{defkeyword}, and an emulation of the old-style 212like @code{defkeyword}, and an emulation of the old-style
226multiple-values feature. @xref{Old CL Compatibility}. 213multiple-values feature. This file is obsolete and should not be used
214in new code. @xref{Old CL Compatibility}.
227 215
228@node Installation, Naming Conventions, Organization, Overview 216@node Installation, Naming Conventions, Organization, Overview
229@section Installation 217@section Installation
230 218
231@noindent 219@noindent
232Installation of the @dfn{CL} package is simple: Just put the 220The @dfn{CL} package is distributed with Emacs, so there is no need
233byte-compiled files @file{cl.elc}, @file{cl-extra.elc}, 221to install anything.
234@file{cl-seq.elc}, @file{cl-macs.elc}, and @file{cl-compat.elc} 222
235into a directory on your @code{load-path}. 223If you do need to install it, just put the byte-compiled files
236 224@file{cl.elc}, @file{cl-extra.elc}, @file{cl-seq.elc},
237There are no special requirements to compile this package: 225@file{cl-macs.elc}, and (if necessary) @file{cl-compat.elc} into a
238The files do not have to be loaded before they are compiled, 226directory on your @code{load-path}. Also, format the @file{cl.texi}
239nor do they need to be compiled in any particular order. 227file and put the resulting Info files into a directory in your
240 228@code{Info-directory-list}.
241You may choose to put the files into your main @file{lisp/}
242directory, replacing the original @file{cl.el} file there. Or,
243you could put them into a directory that comes before @file{lisp/}
244on your @code{load-path} so that the old @file{cl.el} is
245effectively hidden.
246
247Also, format the @file{cl.texinfo} file and put the resulting
248Info files in the @file{info/} directory or another suitable place.
249
250You may instead wish to leave this package's components all in
251their own directory, and then add this directory to your
252@code{load-path} and @code{Info-directory-list}.
253Add the directory to the front of the list so the old @dfn{CL}
254package and its documentation are hidden.
255 229
256@node Naming Conventions, , Installation, Overview 230@node Naming Conventions, , Installation, Overview
257@section Naming Conventions 231@section Naming Conventions
@@ -5076,8 +5050,8 @@ Lisp.
5076@noindent 5050@noindent
5077The @dfn{CL} package includes emulations of some features of the 5051The @dfn{CL} package includes emulations of some features of the
5078old @file{cl.el}, in the form of a compatibility package 5052old @file{cl.el}, in the form of a compatibility package
5079@code{cl-compat}. To use it, put @code{(require 'cl-compat)} in 5053@code{cl-compat}. This file is obsolete and may be removed in future,
5080your program. 5054so it should not be used in new code.
5081 5055
5082The old package defined a number of internal routines without 5056The old package defined a number of internal routines without
5083@code{cl-} prefixes or other annotations. Call to these routines 5057@code{cl-} prefixes or other annotations. Call to these routines
diff --git a/doc/misc/eudc.texi b/doc/misc/eudc.texi
index 48606e0d664..b62c0ed75ea 100644
--- a/doc/misc/eudc.texi
+++ b/doc/misc/eudc.texi
@@ -137,7 +137,7 @@ complement to the DAP itself.
137LDAP servers usually store (but are not limited to) information about 137LDAP servers usually store (but are not limited to) information about
138people such as their name, phone number, email address, office 138people such as their name, phone number, email address, office
139location, etc@enddots{} More information about LDAP can be found at 139location, etc@enddots{} More information about LDAP can be found at
140@url{http://www.openldap.org/} 140@url{http://www.openldap.org/}.
141 141
142EUDC requires external support to access LDAP directory servers 142EUDC requires external support to access LDAP directory servers
143(@pxref{LDAP Requirements}) 143(@pxref{LDAP Requirements})
@@ -148,17 +148,15 @@ EUDC requires external support to access LDAP directory servers
148@section CCSO PH/QI 148@section CCSO PH/QI
149 149
150The Central Computing Services Office (CCSO) of the University of 150The Central Computing Services Office (CCSO) of the University of
151Illinois at Urbana Champaign (UIUC) created and freely distributes a 151Illinois at Urbana Champaign created and freely distributed a
152directory system that is currently in use in more than 300 organizations 152directory system that was used by many organizations in the 1990s.
153around the world. The system records information about people such as 153The system records information about people such as their address,
154their address, phone number, email, academic information or any other 154phone number, email, academic information or any other details it was
155details it was configured to. 155configured to. Nowadays this system is not widely used.
156 156
157The system consists of two parts: a database server traditionally called 157The system consists of two parts: a database server traditionally called
158@samp{qi} and a command-line client called @samp{ph}. 158@samp{qi} and a command-line client called @samp{ph}. As of 2010, the
159@url{ftp://uiarchive.cso.uiuc.edu/pub/packages/ph} is the main 159code can still be downloaded from @url{http://www-dev.cites.uiuc.edu/ph/}.
160distribution site. @url{http://www.uiuc.edu/cgi-bin/ph/lookup?Query=.}
161provides a listing of the active @samp{qi} servers.
162 160
163The original command-line @samp{ph} client that comes with the 161The original command-line @samp{ph} client that comes with the
164@samp{ph/qi} distribution provides additional features like the 162@samp{ph/qi} distribution provides additional features like the
@@ -225,18 +223,10 @@ email composition buffers (@pxref{Inline Query Expansion})
225@comment node-name, next, previous, up 223@comment node-name, next, previous, up
226@section LDAP Requirements 224@section LDAP Requirements
227 225
228LDAP support is added by means of @file{ldap.el} which is part of Emacs. 226LDAP support is added by means of @file{ldap.el}, which is part of Emacs.
229@file{ldap.el} needs an external command line utility named 227@file{ldap.el} needs an external command line utility named
230@file{ldapsearch} which is available as part of LDAP toolkits: 228@file{ldapsearch}, available as part of Open LDAP
231 229(@url{http://www.openldap.org/}).
232@itemize @bullet
233@item
234Open LDAP Libraries
235(@url{http://www.openldap.org/})
236@item
237University of Michigan's LDAP Client software
238(@url{http://www.umich.edu/~dirsvcs/ldap/})
239@end itemize
240 230
241 231
242@node Usage, Credits, Installation, Top 232@node Usage, Credits, Installation, Top
@@ -968,7 +958,3 @@ in testing and proofreading the code and docs of @file{ph.el}.
968@printindex vr 958@printindex vr
969 959
970@bye 960@bye
971
972@ignore
973 arch-tag: 1b79460b-4ea1-441d-ab45-05ddd16ef241
974@end ignore
diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog
index 6d5bf6c4e5b..50528a4508c 100644
--- a/lib-src/ChangeLog
+++ b/lib-src/ChangeLog
@@ -1,3 +1,8 @@
12010-10-08 Glenn Morris <rgm@gnu.org>
2
3 * emacsclient.c (set_local_socket) [DARWIN_OS]: Try as a fall-back
4 DARWIN_USER_TEMP_DIR. (Bug#3992)
5
12010-10-03 Dan Nicolaescu <dann@ics.uci.edu> 62010-10-03 Dan Nicolaescu <dann@ics.uci.edu>
2 7
3 * test-distrib.c (cool_read): 8 * test-distrib.c (cool_read):
diff --git a/lib-src/emacsclient.c b/lib-src/emacsclient.c
index b20710e110c..b60b2661805 100644
--- a/lib-src/emacsclient.c
+++ b/lib-src/emacsclient.c
@@ -1223,7 +1223,18 @@ set_local_socket (void)
1223 { 1223 {
1224 tmpdir = egetenv ("TMPDIR"); 1224 tmpdir = egetenv ("TMPDIR");
1225 if (!tmpdir) 1225 if (!tmpdir)
1226 tmpdir = "/tmp"; 1226 {
1227#ifdef DARWIN_OS
1228 size_t n = confstr (_CS_DARWIN_USER_TEMP_DIR, NULL, (size_t) 0);
1229 if (n > 0)
1230 {
1231 tmpdir = alloca (n);
1232 confstr (_CS_DARWIN_USER_TEMP_DIR, tmpdir, n);
1233 }
1234 else
1235#endif
1236 tmpdir = "/tmp";
1237 }
1227 socket_name = alloca (strlen (tmpdir) + strlen (server_name) 1238 socket_name = alloca (strlen (tmpdir) + strlen (server_name)
1228 + EXTRA_SPACE); 1239 + EXTRA_SPACE);
1229 sprintf (socket_name, "%s/emacs%d/%s", 1240 sprintf (socket_name, "%s/emacs%d/%s",
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 43589198bea..9dfd7d289fd 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,5 +1,51 @@
12010-10-08 Glenn Morris <rgm@gnu.org> 12010-10-08 Glenn Morris <rgm@gnu.org>
2 2
3 * emacs-lisp/cl-compat.el, emacs-lisp/lmenu.el: Move to obsolete/.
4
5 * emacs-lisp/shadow.el (lisp-shadow): Change prefix.
6 (shadows-compare-text-p): Make it an obsolete alias for...
7 (load-path-shadows-compare-text): ... new name.
8 (find-emacs-lisp-shadows): Update for above name change.
9 (load-path-shadows-same-file-or-nonexistent): New name for the old
10 shadow-same-file-or-nonexistent.
11
122010-10-08 Chong Yidong <cyd@stupidchicken.com>
13
14 * minibuffer.el (completion--some, completion--do-completion)
15 (minibuffer-complete-and-exit, minibuffer-completion-help)
16 (completion-basic-try-completion)
17 (completion-basic-all-completions)
18 (completion-pcm--find-all-completions): Use lexical-let to
19 avoid some false matches in variable completion (Bug#7056)
20
212010-10-08 Olof Ohlsson Sax <olof.ohlsson.sax@gmail.com> (tiny change)
22
23 * vc-svn.el (vc-svn-merge-news): Use --non-interactive. (Bug#7152)
24
252010-10-08 Leo <sdl.web@gmail.com>
26
27 * dnd.el (dnd-get-local-file-name): If MUST-EXIST is non-nil, only
28 return non-nil if the file exists (Bug#7090).
29
302010-10-08 Stefan Monnier <monnier@iro.umontreal.ca>
31
32 * minibuffer.el (completion--replace):
33 Better preserve markers (bug#7138).
34
352010-10-08 Juanma Barranquero <lekktu@gmail.com>
36
37 * server.el (server-process-filter): Doc fix.
38
392010-10-08 Drew Adams <drew.adams@oracle.com>
40
41 * dired.el (dired-save-positions): Doc fix. (Bug#7119)
42
432010-10-08 Andreas Schwab <schwab@linux-m68k.org>
44
45 * Makefile.in (ELCFILES): Update.
46
472010-10-08 Glenn Morris <rgm@gnu.org>
48
3 * vc/ediff-wind.el (ediff-setup-control-frame): 49 * vc/ediff-wind.el (ediff-setup-control-frame):
4 * vc/ediff-ptch.el (ediff-default-backup-extension): 50 * vc/ediff-ptch.el (ediff-default-backup-extension):
5 * vc/ediff-diff.el (ediff-shell, ediff-diff-options) 51 * vc/ediff-diff.el (ediff-shell, ediff-diff-options)
diff --git a/lisp/cedet/ChangeLog b/lisp/cedet/ChangeLog
index 85f0410541a..5617be568dd 100644
--- a/lisp/cedet/ChangeLog
+++ b/lisp/cedet/ChangeLog
@@ -1,3 +1,32 @@
12010-09-30 Chong Yidong <cyd@stupidchicken.com>
2
3 * semantic/bovine/el.el:
4 * semantic/mru-bookmark.el (global-semantic-mru-bookmark-mode):
5 Fix require statements.
6
72010-09-29 Chong Yidong <cyd@stupidchicken.com>
8
9 * semantic/tag.el (semantic-tag-version): Bump to 2.0.
10
11 * semantic/db-typecache.el (semanticdb-typecache-find-default):
12 * semantic/imenu.el (semantic-create-imenu-index):
13 * semantic/grammar.el (semantic--grammar-macro-function-tag):
14 * semantic/fw.el (semanticdb-without-unloaded-file-searches): Fix
15 require. Suggested by David Engster.
16
17 * semantic/bovine/c-by.el: Regenerate.
18
192010-09-29 Eric Ludlam <zappo@gnu.org>
20
21 * semantic/lex-spp.el (semantic-lex-spp-debug-symbol): New var.
22 (semantic-lex-spp-enable-debug-symbol): New command
23 (semantic-lex-spp-value-valid-p)
24 (semantic-lex-spp-validate-value): New functions
25 (semantic-lex-spp-symbol-set)
26 (semantic-lex-spp-symbol-push): Add call to validate value.
27 (semantic-lex-spp-table-write-slot-value): Instead of erroring on
28 invalid values during save, just save a nil.
29
12010-09-25 Chong Yidong <cyd@stupidchicken.com> 302010-09-25 Chong Yidong <cyd@stupidchicken.com>
2 31
3 * ede/linux.el (ede-project-class-files): 32 * ede/linux.el (ede-project-class-files):
@@ -465,11 +494,6 @@
465 (ede-dired-minor-mode): Use define-minor-mode and derived-mode-p. 494 (ede-dired-minor-mode): Use define-minor-mode and derived-mode-p.
466 (ede-dired-add-to-target): Use dolist. 495 (ede-dired-add-to-target): Use dolist.
467 496
4682010-04-18 Chong Yidong <cyd@stupidchicken.com>
469
470 * ede/pmake.el (ede-proj-makefile-insert-variables):
471 Don't destroy list before using it.
472
4732010-04-29 Chong Yidong <cyd@stupidchicken.com> 4972010-04-29 Chong Yidong <cyd@stupidchicken.com>
474 498
475 * semantic.el (semantic-completion-at-point-function): 499 * semantic.el (semantic-completion-at-point-function):
diff --git a/lisp/cedet/semantic/bovine/c-by.el b/lisp/cedet/semantic/bovine/c-by.el
index 09fb42261a4..c33f3fb67f5 100644
--- a/lisp/cedet/semantic/bovine/c-by.el
+++ b/lisp/cedet/semantic/bovine/c-by.el
@@ -1240,7 +1240,9 @@
1240 (nth 7 vals)) 1240 (nth 7 vals))
1241 (nth 0 vals) 1241 (nth 0 vals)
1242 (nth 10 vals) 1242 (nth 10 vals)
1243 (nth 4 vals)) 1243 (list
1244 (nth 4 vals))
1245 (nth 9 vals))
1244 ) 1246 )
1245 (opt-stars 1247 (opt-stars
1246 opt-class 1248 opt-class
@@ -1262,7 +1264,9 @@
1262 (nth 6 vals)) 1264 (nth 6 vals))
1263 (nth 0 vals) 1265 (nth 0 vals)
1264 (nth 9 vals) 1266 (nth 9 vals)
1265 (nth 4 vals)) 1267 (list
1268 (nth 4 vals))
1269 (nth 8 vals))
1266 ) 1270 )
1267 ) ;; end func-decl 1271 ) ;; end func-decl
1268 1272
@@ -1433,13 +1437,11 @@
1433 namespace-symbol 1437 namespace-symbol
1434 opt-bits 1438 opt-bits
1435 opt-array 1439 opt-array
1436 opt-assign
1437 ,(semantic-lambda 1440 ,(semantic-lambda
1438 (nth 2 vals) 1441 (nth 2 vals)
1439 (nth 0 vals) 1442 (nth 0 vals)
1440 (nth 3 vals) 1443 (nth 3 vals)
1441 (nth 4 vals) 1444 (nth 4 vals))
1442 (nth 5 vals))
1443 ) 1445 )
1444 ) ;; end varname 1446 ) ;; end varname
1445 1447
@@ -1484,19 +1486,28 @@
1484 ) 1486 )
1485 ) ;; end variablearg-opt-name 1487 ) ;; end variablearg-opt-name
1486 1488
1489 (varname-opt-initializer
1490 (semantic-list)
1491 (opt-assign)
1492 ( ;;EMPTY
1493 )
1494 ) ;; end varname-opt-initializer
1495
1487 (varnamelist 1496 (varnamelist
1488 (opt-ref 1497 (opt-ref
1489 varname 1498 varname
1499 varname-opt-initializer
1490 punctuation 1500 punctuation
1491 "\\`[,]\\'" 1501 "\\`[,]\\'"
1492 varnamelist 1502 varnamelist
1493 ,(semantic-lambda 1503 ,(semantic-lambda
1494 (cons 1504 (cons
1495 (nth 1 vals) 1505 (nth 1 vals)
1496 (nth 3 vals))) 1506 (nth 4 vals)))
1497 ) 1507 )
1498 (opt-ref 1508 (opt-ref
1499 varname 1509 varname
1510 varname-opt-initializer
1500 ,(semantic-lambda 1511 ,(semantic-lambda
1501 (list 1512 (list
1502 (nth 1 vals))) 1513 (nth 1 vals)))
@@ -2108,74 +2119,64 @@
2108 "\\`[&]\\'") 2119 "\\`[&]\\'")
2109 ) ;; end expr-start 2120 ) ;; end expr-start
2110 2121
2122 (expr-binop
2123 (punctuation
2124 "\\`[-]\\'")
2125 (punctuation
2126 "\\`[+]\\'")
2127 (punctuation
2128 "\\`[*]\\'")
2129 (punctuation
2130 "\\`[/]\\'")
2131 (punctuation
2132 "\\`[&]\\'"
2133 punctuation
2134 "\\`[&]\\'")
2135 (punctuation
2136 "\\`[&]\\'")
2137 (punctuation
2138 "\\`[|]\\'"
2139 punctuation
2140 "\\`[|]\\'")
2141 (punctuation
2142 "\\`[|]\\'")
2143 ) ;; end expr-binop
2144
2111 (expression 2145 (expression
2112 (number 2146 (unaryexpression
2147 expr-binop
2148 unaryexpression
2113 ,(semantic-lambda 2149 ,(semantic-lambda
2114 (list 2150 (list
2115 (identity start) 2151 (identity start)
2116 (identity end))) 2152 (identity end)))
2117 ) 2153 )
2118 (multi-stage-dereference 2154 (unaryexpression
2119 ,(semantic-lambda 2155 ,(semantic-lambda
2120 (list 2156 (list
2121 (identity start) 2157 (identity start)
2122 (identity end))) 2158 (identity end)))
2123 ) 2159 )
2160 ) ;; end expression
2161
2162 (unaryexpression
2163 (number)
2164 (multi-stage-dereference)
2124 (NEW 2165 (NEW
2125 multi-stage-dereference 2166 multi-stage-dereference)
2126 ,(semantic-lambda
2127 (list
2128 (identity start)
2129 (identity end)))
2130 )
2131 (NEW 2167 (NEW
2132 builtintype-types 2168 builtintype-types
2133 semantic-list 2169 semantic-list)
2134 ,(semantic-lambda 2170 (namespace-symbol)
2135 (list 2171 (string-seq)
2136 (identity start)
2137 (identity end)))
2138 )
2139 (namespace-symbol
2140 ,(semantic-lambda
2141 (list
2142 (identity start)
2143 (identity end)))
2144 )
2145 (string-seq
2146 ,(semantic-lambda
2147 (list
2148 (identity start)
2149 (identity end)))
2150 )
2151 (type-cast 2172 (type-cast
2152 expression 2173 expression)
2153 ,(semantic-lambda
2154 (list
2155 (identity start)
2156 (identity end)))
2157 )
2158 (semantic-list
2159 expression
2160 ,(semantic-lambda
2161 (list
2162 (identity start)
2163 (identity end)))
2164 )
2165 (semantic-list 2174 (semantic-list
2166 ,(semantic-lambda 2175 expression)
2167 (list 2176 (semantic-list)
2168 (identity start)
2169 (identity end)))
2170 )
2171 (expr-start 2177 (expr-start
2172 expression 2178 expression)
2173 ,(semantic-lambda 2179 ) ;; end unaryexpression
2174 (list
2175 (identity start)
2176 (identity end)))
2177 )
2178 ) ;; end expression
2179 ) 2180 )
2180 "Parser table.") 2181 "Parser table.")
2181 2182
diff --git a/lisp/cedet/semantic/bovine/el.el b/lisp/cedet/semantic/bovine/el.el
index 5b5a5660b7d..ed1f74c590f 100644
--- a/lisp/cedet/semantic/bovine/el.el
+++ b/lisp/cedet/semantic/bovine/el.el
@@ -958,7 +958,7 @@ ELisp variables can be pretty long, so track this one too.")
958(add-hook 'lisp-mode-hook 'semantic-default-elisp-setup) 958(add-hook 'lisp-mode-hook 'semantic-default-elisp-setup)
959 959
960(eval-after-load "semanticdb" 960(eval-after-load "semanticdb"
961 '(require 'semanticdb-el) 961 '(require 'semantic/db-el)
962 ) 962 )
963 963
964(provide 'semantic/bovine/el) 964(provide 'semantic/bovine/el)
diff --git a/lisp/cedet/semantic/db-typecache.el b/lisp/cedet/semantic/db-typecache.el
index 71b15fdf82a..59ba83fe9d0 100644
--- a/lisp/cedet/semantic/db-typecache.el
+++ b/lisp/cedet/semantic/db-typecache.el
@@ -403,7 +403,7 @@ TYPE is the datatype to find.
403PATH is the search path, which should be one table object. 403PATH is the search path, which should be one table object.
404If FIND-FILE-MATCH is non-nil, then force the file belonging to the 404If FIND-FILE-MATCH is non-nil, then force the file belonging to the
405found tag to be loaded." 405found tag to be loaded."
406 (if (not (and (featurep 'semanticdb) semanticdb-current-database)) 406 (if (not (and (featurep 'semantic/db) semanticdb-current-database))
407 nil ;; No DB, no search 407 nil ;; No DB, no search
408 (save-excursion 408 (save-excursion
409 (semanticdb-typecache-find-method (or path semanticdb-current-table) 409 (semanticdb-typecache-find-method (or path semanticdb-current-table)
diff --git a/lisp/cedet/semantic/fw.el b/lisp/cedet/semantic/fw.el
index 49790861632..811508377b8 100644
--- a/lisp/cedet/semantic/fw.el
+++ b/lisp/cedet/semantic/fw.el
@@ -315,7 +315,7 @@ FILE, NOWARN, RAWFILE, and WILDCARDS are passed into `find-file-noselect'"
315(defmacro semanticdb-without-unloaded-file-searches (forms) 315(defmacro semanticdb-without-unloaded-file-searches (forms)
316 "Execute FORMS with `unloaded' removed from the current throttle." 316 "Execute FORMS with `unloaded' removed from the current throttle."
317 `(let ((semanticdb-find-default-throttle 317 `(let ((semanticdb-find-default-throttle
318 (if (featurep 'semanticdb-find) 318 (if (featurep 'semantic/db-find)
319 (remq 'unloaded semanticdb-find-default-throttle) 319 (remq 'unloaded semanticdb-find-default-throttle)
320 nil))) 320 nil)))
321 ,forms)) 321 ,forms))
diff --git a/lisp/cedet/semantic/grammar.el b/lisp/cedet/semantic/grammar.el
index 65365768f98..d99ae0cb0ac 100644
--- a/lisp/cedet/semantic/grammar.el
+++ b/lisp/cedet/semantic/grammar.el
@@ -1519,7 +1519,7 @@ Return the tag found or nil if not found."
1519 (car (semantic-find-tags-by-class 1519 (car (semantic-find-tags-by-class
1520 'function 1520 'function
1521 (or (semantic-find-tags-by-name name (current-buffer)) 1521 (or (semantic-find-tags-by-name name (current-buffer))
1522 (and (featurep 'semanticdb) 1522 (and (featurep 'semantic/db)
1523 semanticdb-current-database 1523 semanticdb-current-database
1524 (cdar (semanticdb-find-tags-by-name name nil t))))))) 1524 (cdar (semanticdb-find-tags-by-name name nil t)))))))
1525 1525
diff --git a/lisp/cedet/semantic/imenu.el b/lisp/cedet/semantic/imenu.el
index e38b50bcd57..465a93a16dd 100644
--- a/lisp/cedet/semantic/imenu.el
+++ b/lisp/cedet/semantic/imenu.el
@@ -235,7 +235,7 @@ Optional argument STREAM is an optional stream of tags used to create menus."
235 (setq imenu-default-goto-function 'semantic-imenu-goto-function) 235 (setq imenu-default-goto-function 'semantic-imenu-goto-function)
236 (prog1 236 (prog1
237 (if (and semantic-imenu-index-directory 237 (if (and semantic-imenu-index-directory
238 (featurep 'semanticdb) 238 (featurep 'semantic/db)
239 (semanticdb-minor-mode-p)) 239 (semanticdb-minor-mode-p))
240 (semantic-create-imenu-directory-index 240 (semantic-create-imenu-directory-index
241 (or stream (semantic-fetch-tags-fast))) 241 (or stream (semantic-fetch-tags-fast)))
diff --git a/lisp/cedet/semantic/lex-spp.el b/lisp/cedet/semantic/lex-spp.el
index 88b77e50e1d..0b4fa930b1b 100644
--- a/lisp/cedet/semantic/lex-spp.el
+++ b/lisp/cedet/semantic/lex-spp.el
@@ -173,10 +173,42 @@ The search priority is:
173 (setq semantic-lex-spp-dynamic-macro-symbol-obarray-stack 173 (setq semantic-lex-spp-dynamic-macro-symbol-obarray-stack
174 (make-vector 13 0)))) 174 (make-vector 13 0))))
175 175
176(defun semantic-lex-spp-value-valid-p (value)
177 "Return non-nil if VALUE is valid."
178 (or (null value)
179 (stringp value)
180 (and (consp value)
181 (or (semantic-lex-token-p (car value))
182 (eq (car (car value)) 'spp-arg-list)))))
183
184(defvar semantic-lex-spp-debug-symbol nil
185 "A symbol to break on if it is being set somewhere.")
186
187(defun semantic-lex-spp-enable-debug-symbol (sym)
188 "Enable debugging for symbol SYM.
189Disable debugging by entering nothing."
190 (interactive "sSymbol: ")
191 (if (string= sym "")
192 (setq semantic-lex-spp-debug-symbol nil)
193 (setq semantic-lex-spp-debug-symbol sym)))
194
195(defmacro semantic-lex-spp-validate-value (name value)
196 "Validate the NAME and VALUE of a macro before it is set."
197; `(progn
198; (when (not (semantic-lex-spp-value-valid-p ,value))
199; (error "Symbol \"%s\" with bogus value %S" ,name ,value))
200; (when (and semantic-lex-spp-debug-symbol
201; (string= semantic-lex-spp-debug-symbol name))
202; (debug))
203; )
204 nil
205 )
206
176(defun semantic-lex-spp-symbol-set (name value &optional obarray-in) 207(defun semantic-lex-spp-symbol-set (name value &optional obarray-in)
177 "Set value of spp symbol with NAME to VALUE and return VALUE. 208 "Set value of spp symbol with NAME to VALUE and return VALUE.
178If optional OBARRAY-IN is non-nil, then use that obarray instead of 209If optional OBARRAY-IN is non-nil, then use that obarray instead of
179the dynamic map." 210the dynamic map."
211 (semantic-lex-spp-validate-value name value)
180 (if (and (stringp value) (string= value "")) (setq value nil)) 212 (if (and (stringp value) (string= value "")) (setq value nil))
181 (set (intern name (or obarray-in 213 (set (intern name (or obarray-in
182 (semantic-lex-spp-dynamic-map))) 214 (semantic-lex-spp-dynamic-map)))
@@ -192,6 +224,7 @@ the dynamic map."
192(defun semantic-lex-spp-symbol-push (name value) 224(defun semantic-lex-spp-symbol-push (name value)
193 "Push macro NAME with VALUE into the map. 225 "Push macro NAME with VALUE into the map.
194Reverse with `semantic-lex-spp-symbol-pop'." 226Reverse with `semantic-lex-spp-symbol-pop'."
227 (semantic-lex-spp-validate-value name value)
195 (let* ((map (semantic-lex-spp-dynamic-map)) 228 (let* ((map (semantic-lex-spp-dynamic-map))
196 (stack (semantic-lex-spp-dynamic-map-stack)) 229 (stack (semantic-lex-spp-dynamic-map-stack))
197 (mapsym (intern name map)) 230 (mapsym (intern name map))
diff --git a/lisp/cedet/semantic/mru-bookmark.el b/lisp/cedet/semantic/mru-bookmark.el
index 12e0cb9f834..b723a848c10 100644
--- a/lisp/cedet/semantic/mru-bookmark.el
+++ b/lisp/cedet/semantic/mru-bookmark.el
@@ -239,6 +239,18 @@ This function pushes tags onto the tag ring."
239;; 239;;
240;; Tracking minor mode. 240;; Tracking minor mode.
241 241
242(defcustom global-semantic-mru-bookmark-mode nil
243 "If non-nil, enable `semantic-mru-bookmark-mode' globally.
244When this mode is enabled, Emacs keeps track of which tags have
245been edited, and you can re-visit them with \\[semantic-mrub-switch-tags]."
246 :group 'semantic
247 :group 'semantic-modes
248 :type 'boolean
249 :require 'semantic/util-modes
250 :initialize 'custom-initialize-default
251 :set (lambda (sym val)
252 (global-semantic-mru-bookmark-mode (if val 1 -1))))
253
242;;;###autoload 254;;;###autoload
243(define-minor-mode global-semantic-mru-bookmark-mode 255(define-minor-mode global-semantic-mru-bookmark-mode
244 "Toggle global use of option `semantic-mru-bookmark-mode'. 256 "Toggle global use of option `semantic-mru-bookmark-mode'.
diff --git a/lisp/cedet/semantic/tag.el b/lisp/cedet/semantic/tag.el
index e9094fcb051..0195a29b66e 100644
--- a/lisp/cedet/semantic/tag.el
+++ b/lisp/cedet/semantic/tag.el
@@ -53,7 +53,7 @@
53(declare-function semantic-fetch-tags "semantic") 53(declare-function semantic-fetch-tags "semantic")
54(declare-function semantic-clear-toplevel-cache "semantic") 54(declare-function semantic-clear-toplevel-cache "semantic")
55 55
56(defconst semantic-tag-version "2.0pre7" 56(defconst semantic-tag-version "2.0"
57 "Version string of semantic tags made with this code.") 57 "Version string of semantic tags made with this code.")
58 58
59(defconst semantic-tag-incompatible-version "1.0" 59(defconst semantic-tag-incompatible-version "1.0"
@@ -221,6 +221,7 @@ See also the function `semantic-ctxt-current-mode'."
221 ;; beginning of TAG. 221 ;; beginning of TAG.
222 (or (and (>= (point) start) (< (point) end)) 222 (or (and (>= (point) start) (< (point) end))
223 (goto-char start)) 223 (goto-char start))
224 (require 'semantic/ctxt)
224 (semantic-ctxt-current-mode))))) 225 (semantic-ctxt-current-mode)))))
225 226
226(defsubst semantic--tag-attributes-cdr (tag) 227(defsubst semantic--tag-attributes-cdr (tag)
diff --git a/lisp/dired.el b/lisp/dired.el
index 3fdb82ca7d3..f840b60ab07 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -1178,7 +1178,7 @@ Preserves old cursor, marks/flags, hidden-p."
1178The positions have the form (BUFFER-POSITION WINDOW-POSITIONS). 1178The positions have the form (BUFFER-POSITION WINDOW-POSITIONS).
1179 1179
1180BUFFER-POSITION is the point position in the current dired buffer. 1180BUFFER-POSITION is the point position in the current dired buffer.
1181The buffer position have the form (BUFFER DIRED-FILENAME BUFFER-POINT). 1181It has the form (BUFFER DIRED-FILENAME BUFFER-POINT).
1182 1182
1183WINDOW-POSITIONS are current positions in all windows displaying 1183WINDOW-POSITIONS are current positions in all windows displaying
1184this dired buffer. The window positions have the form (WINDOW 1184this dired buffer. The window positions have the form (WINDOW
diff --git a/lisp/dnd.el b/lisp/dnd.el
index 7b9d0c0786c..cbbef384436 100644
--- a/lisp/dnd.el
+++ b/lisp/dnd.el
@@ -155,10 +155,11 @@ Return nil if URI is not a local file."
155 (let* ((decoded-f (decode-coding-string 155 (let* ((decoded-f (decode-coding-string
156 f 156 f
157 (or file-name-coding-system 157 (or file-name-coding-system
158 default-file-name-coding-system))) 158 default-file-name-coding-system))))
159 (try-f (if (file-readable-p decoded-f) decoded-f f))) 159 (setq f (cond ((file-readable-p decoded-f) decoded-f)
160 (when (file-readable-p try-f) try-f))))) 160 ((file-readable-p f) f)
161 161 (t nil)))))
162 f))
162 163
163(defun dnd-open-local-file (uri action) 164(defun dnd-open-local-file (uri action)
164 "Open a local file. 165 "Open a local file.
diff --git a/lisp/emacs-lisp/shadow.el b/lisp/emacs-lisp/shadow.el
index ee59cca2d6f..850c1e89682 100644
--- a/lisp/emacs-lisp/shadow.el
+++ b/lisp/emacs-lisp/shadow.el
@@ -53,10 +53,13 @@
53 53
54(defgroup lisp-shadow nil 54(defgroup lisp-shadow nil
55 "Locate Emacs Lisp file shadowings." 55 "Locate Emacs Lisp file shadowings."
56 :prefix "shadows-" 56 :prefix "load-path-shadows-"
57 :group 'lisp) 57 :group 'lisp)
58 58
59(defcustom shadows-compare-text-p nil 59(define-obsolete-variable-alias 'shadows-compare-text-p
60 'load-path-shadows-compare-text "23.3")
61
62(defcustom load-path-shadows-compare-text nil
60 "If non-nil, then shadowing files are reported only if their text differs. 63 "If non-nil, then shadowing files are reported only if their text differs.
61This is slower, but filters out some innocuous shadowing." 64This is slower, but filters out some innocuous shadowing."
62 :type 'boolean 65 :type 'boolean
@@ -124,11 +127,11 @@ See the documentation for `list-load-path-shadows' for further information."
124 ;; Report it unless the files are identical. 127 ;; Report it unless the files are identical.
125 (let ((base1 (concat (cdr orig-dir) "/" file)) 128 (let ((base1 (concat (cdr orig-dir) "/" file))
126 (base2 (concat dir "/" file))) 129 (base2 (concat dir "/" file)))
127 (if (not (and shadows-compare-text-p 130 (if (not (and load-path-shadows-compare-text
128 (shadow-same-file-or-nonexistent 131 (load-path-shadows-same-file-or-nonexistent
129 (concat base1 ".el") (concat base2 ".el")) 132 (concat base1 ".el") (concat base2 ".el"))
130 ;; This is a bit strict, but safe. 133 ;; This is a bit strict, but safe.
131 (shadow-same-file-or-nonexistent 134 (load-path-shadows-same-file-or-nonexistent
132 (concat base1 ".elc") (concat base2 ".elc")))) 135 (concat base1 ".elc") (concat base2 ".elc"))))
133 (setq shadows 136 (setq shadows
134 (append shadows (list base1 base2))))) 137 (append shadows (list base1 base2)))))
@@ -140,7 +143,7 @@ See the documentation for `list-load-path-shadows' for further information."
140 143
141;; Return true if neither file exists, or if both exist and have identical 144;; Return true if neither file exists, or if both exist and have identical
142;; contents. 145;; contents.
143(defun shadow-same-file-or-nonexistent (f1 f2) 146(defun load-path-shadows-same-file-or-nonexistent (f1 f2)
144 (let ((exists1 (file-exists-p f1)) 147 (let ((exists1 (file-exists-p f1))
145 (exists2 (file-exists-p f2))) 148 (exists2 (file-exists-p f2)))
146 (or (and (not exists1) (not exists2)) 149 (or (and (not exists1) (not exists2))
diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el
index f7dc035a886..98380f3926e 100644
--- a/lisp/minibuffer.el
+++ b/lisp/minibuffer.el
@@ -133,8 +133,8 @@ the closest directory separators."
133 "Apply FUN to each element of XS in turn. 133 "Apply FUN to each element of XS in turn.
134Return the first non-nil returned value. 134Return the first non-nil returned value.
135Like CL's `some'." 135Like CL's `some'."
136 (let ((firsterror nil) 136 (lexical-let ((firsterror nil)
137 res) 137 res)
138 (while (and (not res) xs) 138 (while (and (not res) xs)
139 (condition-case err 139 (condition-case err
140 (setq res (funcall fun (pop xs))) 140 (setq res (funcall fun (pop xs)))
@@ -485,10 +485,30 @@ in the last `cdr'."
485(defun completion--replace (beg end newtext) 485(defun completion--replace (beg end newtext)
486 "Replace the buffer text between BEG and END with NEWTEXT. 486 "Replace the buffer text between BEG and END with NEWTEXT.
487Moves point to the end of the new text." 487Moves point to the end of the new text."
488 ;; This should be in subr.el. 488 ;; Maybe this should be in subr.el.
489 ;; You'd think this is trivial to do, but details matter if you want 489 ;; You'd think this is trivial to do, but details matter if you want
490 ;; to keep markers "at the right place" and be robust in the face of 490 ;; to keep markers "at the right place" and be robust in the face of
491 ;; after-change-functions that may themselves modify the buffer. 491 ;; after-change-functions that may themselves modify the buffer.
492 (let ((prefix-len 0))
493 ;; Don't touch markers in the shared prefix (if any).
494 (while (and (< prefix-len (length newtext))
495 (< (+ beg prefix-len) end)
496 (eq (char-after (+ beg prefix-len))
497 (aref newtext prefix-len)))
498 (setq prefix-len (1+ prefix-len)))
499 (unless (zerop prefix-len)
500 (setq beg (+ beg prefix-len))
501 (setq newtext (substring newtext prefix-len))))
502 (let ((suffix-len 0))
503 ;; Don't touch markers in the shared suffix (if any).
504 (while (and (< suffix-len (length newtext))
505 (< beg (- end suffix-len))
506 (eq (char-before (- end suffix-len))
507 (aref newtext (- (length newtext) suffix-len 1))))
508 (setq suffix-len (1+ suffix-len)))
509 (unless (zerop suffix-len)
510 (setq end (- end suffix-len))
511 (setq newtext (substring newtext 0 (- suffix-len)))))
492 (goto-char beg) 512 (goto-char beg)
493 (insert newtext) 513 (insert newtext)
494 (delete-region (point) (+ (point) (- end beg)))) 514 (delete-region (point) (+ (point) (- end beg))))
@@ -520,15 +540,16 @@ E = after completion we now have an Exact match.
520 101 5 ??? impossible 540 101 5 ??? impossible
521 110 6 some completion happened 541 110 6 some completion happened
522 111 7 completed to an exact completion" 542 111 7 completed to an exact completion"
523 (let* ((beg (field-beginning)) 543 (lexical-let*
524 (end (field-end)) 544 ((beg (field-beginning))
525 (string (buffer-substring beg end)) 545 (end (field-end))
526 (comp (funcall (or try-completion-function 546 (string (buffer-substring beg end))
527 'completion-try-completion) 547 (comp (funcall (or try-completion-function
528 string 548 'completion-try-completion)
529 minibuffer-completion-table 549 string
530 minibuffer-completion-predicate 550 minibuffer-completion-table
531 (- (point) beg)))) 551 minibuffer-completion-predicate
552 (- (point) beg))))
532 (cond 553 (cond
533 ((null comp) 554 ((null comp)
534 (minibuffer-hide-completions) 555 (minibuffer-hide-completions)
@@ -541,14 +562,15 @@ E = after completion we now have an Exact match.
541 ;; `completed' should be t if some completion was done, which doesn't 562 ;; `completed' should be t if some completion was done, which doesn't
542 ;; include simply changing the case of the entered string. However, 563 ;; include simply changing the case of the entered string. However,
543 ;; for appearance, the string is rewritten if the case changes. 564 ;; for appearance, the string is rewritten if the case changes.
544 (let* ((comp-pos (cdr comp)) 565 (lexical-let*
545 (completion (car comp)) 566 ((comp-pos (cdr comp))
546 (completed (not (eq t (compare-strings completion nil nil 567 (completion (car comp))
547 string nil nil t)))) 568 (completed (not (eq t (compare-strings completion nil nil
548 (unchanged (eq t (compare-strings completion nil nil 569 string nil nil t))))
549 string nil nil nil)))) 570 (unchanged (eq t (compare-strings completion nil nil
571 string nil nil nil))))
550 (if unchanged 572 (if unchanged
551 (goto-char end) 573 (goto-char end)
552 ;; Insert in minibuffer the chars we got. 574 ;; Insert in minibuffer the chars we got.
553 (completion--replace beg end completion)) 575 (completion--replace beg end completion))
554 ;; Move point to its completion-mandated destination. 576 ;; Move point to its completion-mandated destination.
@@ -729,8 +751,8 @@ If `minibuffer-completion-confirm' is `confirm-after-completion',
729 `minibuffer-confirm-exit-commands', and accept the input 751 `minibuffer-confirm-exit-commands', and accept the input
730 otherwise." 752 otherwise."
731 (interactive) 753 (interactive)
732 (let ((beg (field-beginning)) 754 (lexical-let ((beg (field-beginning))
733 (end (field-end))) 755 (end (field-end)))
734 (cond 756 (cond
735 ;; Allow user to specify null string 757 ;; Allow user to specify null string
736 ((= beg end) (exit-minibuffer)) 758 ((= beg end) (exit-minibuffer))
@@ -1107,14 +1129,13 @@ variables.")
1107 "Display a list of possible completions of the current minibuffer contents." 1129 "Display a list of possible completions of the current minibuffer contents."
1108 (interactive) 1130 (interactive)
1109 (message "Making completion list...") 1131 (message "Making completion list...")
1110 (let* ((non-essential t) 1132 (lexical-let* ((start (field-beginning))
1111 (start (field-beginning)) 1133 (string (field-string))
1112 (string (field-string)) 1134 (completions (completion-all-completions
1113 (completions (completion-all-completions 1135 string
1114 string 1136 minibuffer-completion-table
1115 minibuffer-completion-table 1137 minibuffer-completion-predicate
1116 minibuffer-completion-predicate 1138 (- (point) (field-beginning)))))
1117 (- (point) (field-beginning)))))
1118 (message nil) 1139 (message nil)
1119 (if (and completions 1140 (if (and completions
1120 (or (consp (cdr completions)) 1141 (or (consp (cdr completions))
@@ -1767,9 +1788,10 @@ Return the new suffix."
1767 (substring afterpoint 0 (cdr bounds))))) 1788 (substring afterpoint 0 (cdr bounds)))))
1768 1789
1769(defun completion-basic-try-completion (string table pred point) 1790(defun completion-basic-try-completion (string table pred point)
1770 (let* ((beforepoint (substring string 0 point)) 1791 (lexical-let*
1771 (afterpoint (substring string point)) 1792 ((beforepoint (substring string 0 point))
1772 (bounds (completion-boundaries beforepoint table pred afterpoint))) 1793 (afterpoint (substring string point))
1794 (bounds (completion-boundaries beforepoint table pred afterpoint)))
1773 (if (zerop (cdr bounds)) 1795 (if (zerop (cdr bounds))
1774 ;; `try-completion' may return a subtly different result 1796 ;; `try-completion' may return a subtly different result
1775 ;; than `all+merge', so try to use it whenever possible. 1797 ;; than `all+merge', so try to use it whenever possible.
@@ -1780,22 +1802,30 @@ Return the new suffix."
1780 (concat completion 1802 (concat completion
1781 (completion--merge-suffix completion point afterpoint)) 1803 (completion--merge-suffix completion point afterpoint))
1782 (length completion)))) 1804 (length completion))))
1783 (let* ((suffix (substring afterpoint (cdr bounds))) 1805 (lexical-let*
1784 (prefix (substring beforepoint 0 (car bounds))) 1806 ((suffix (substring afterpoint (cdr bounds)))
1785 (pattern (completion-basic--pattern 1807 (prefix (substring beforepoint 0 (car bounds)))
1786 beforepoint afterpoint bounds)) 1808 (pattern (delete
1787 (all (completion-pcm--all-completions prefix pattern table pred))) 1809 "" (list (substring beforepoint (car bounds))
1810 'point
1811 (substring afterpoint 0 (cdr bounds)))))
1812 (all (completion-pcm--all-completions prefix pattern table pred)))
1788 (if minibuffer-completing-file-name 1813 (if minibuffer-completing-file-name
1789 (setq all (completion-pcm--filename-try-filter all))) 1814 (setq all (completion-pcm--filename-try-filter all)))
1790 (completion-pcm--merge-try pattern all prefix suffix))))) 1815 (completion-pcm--merge-try pattern all prefix suffix)))))
1791 1816
1792(defun completion-basic-all-completions (string table pred point) 1817(defun completion-basic-all-completions (string table pred point)
1793 (let* ((beforepoint (substring string 0 point)) 1818 (lexical-let*
1794 (afterpoint (substring string point)) 1819 ((beforepoint (substring string 0 point))
1795 (bounds (completion-boundaries beforepoint table pred afterpoint)) 1820 (afterpoint (substring string point))
1796 (prefix (substring beforepoint 0 (car bounds))) 1821 (bounds (completion-boundaries beforepoint table pred afterpoint))
1797 (pattern (completion-basic--pattern beforepoint afterpoint bounds)) 1822 (suffix (substring afterpoint (cdr bounds)))
1798 (all (completion-pcm--all-completions prefix pattern table pred))) 1823 (prefix (substring beforepoint 0 (car bounds)))
1824 (pattern (delete
1825 "" (list (substring beforepoint (car bounds))
1826 'point
1827 (substring afterpoint 0 (cdr bounds)))))
1828 (all (completion-pcm--all-completions prefix pattern table pred)))
1799 (completion-hilit-commonality all point (car bounds)))) 1829 (completion-hilit-commonality all point (car bounds))))
1800 1830
1801;;; Partial-completion-mode style completion. 1831;;; Partial-completion-mode style completion.
@@ -1958,12 +1988,13 @@ POINT is a position inside STRING.
1958FILTER is a function applied to the return value, that can be used, e.g. to 1988FILTER is a function applied to the return value, that can be used, e.g. to
1959filter out additional entries (because TABLE migth not obey PRED)." 1989filter out additional entries (because TABLE migth not obey PRED)."
1960 (unless filter (setq filter 'identity)) 1990 (unless filter (setq filter 'identity))
1961 (let* ((beforepoint (substring string 0 point)) 1991 (lexical-let*
1962 (afterpoint (substring string point)) 1992 ((beforepoint (substring string 0 point))
1963 (bounds (completion-boundaries beforepoint table pred afterpoint)) 1993 (afterpoint (substring string point))
1964 (prefix (substring beforepoint 0 (car bounds))) 1994 (bounds (completion-boundaries beforepoint table pred afterpoint))
1965 (suffix (substring afterpoint (cdr bounds))) 1995 (prefix (substring beforepoint 0 (car bounds)))
1966 firsterror) 1996 (suffix (substring afterpoint (cdr bounds)))
1997 firsterror)
1967 (setq string (substring string (car bounds) (+ point (cdr bounds)))) 1998 (setq string (substring string (car bounds) (+ point (cdr bounds))))
1968 (let* ((relpoint (- point (car bounds))) 1999 (let* ((relpoint (- point (car bounds)))
1969 (pattern (completion-pcm--string->pattern string relpoint)) 2000 (pattern (completion-pcm--string->pattern string relpoint))
diff --git a/lisp/emacs-lisp/cl-compat.el b/lisp/obsolete/cl-compat.el
index f4923b6f8c6..622c4eaace6 100644
--- a/lisp/emacs-lisp/cl-compat.el
+++ b/lisp/obsolete/cl-compat.el
@@ -1,12 +1,12 @@
1;;; cl-compat.el --- Common Lisp extensions for GNU Emacs Lisp (compatibility) 1;;; cl-compat.el --- Common Lisp extensions for GNU Emacs Lisp (compatibility)
2 2
3;; Copyright (C) 1993, 2001, 2002, 2003, 2004, 2005, 3;; Copyright (C) 1993, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
4;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. 4;; 2009, 2010 Free Software Foundation, Inc.
5 5
6;; Author: Dave Gillespie <daveg@synaptics.com> 6;; Author: Dave Gillespie <daveg@synaptics.com>
7;; Version: 2.02 7;; Version: 2.02
8;; Keywords: extensions 8;; Keywords: extensions
9;; Package: emacs 9;; Obsolete-since: 23.3
10 10
11;; This file is part of GNU Emacs. 11;; This file is part of GNU Emacs.
12 12
@@ -25,6 +25,8 @@
25 25
26;;; Commentary: 26;;; Commentary:
27 27
28;; This file has been obsolete since Emacs 23.3.
29
28;; These are extensions to Emacs Lisp that provide a degree of 30;; These are extensions to Emacs Lisp that provide a degree of
29;; Common Lisp compatibility, beyond what is already built-in 31;; Common Lisp compatibility, beyond what is already built-in
30;; in Emacs Lisp. 32;; in Emacs Lisp.
@@ -195,5 +197,4 @@
195;; byte-compile-warnings: (not cl-functions) 197;; byte-compile-warnings: (not cl-functions)
196;; End: 198;; End:
197 199
198;; arch-tag: 9996bb4f-aaf5-4592-b436-bf64759a3163
199;;; cl-compat.el ends here 200;;; cl-compat.el ends here
diff --git a/lisp/emacs-lisp/lmenu.el b/lisp/obsolete/lmenu.el
index 54fb488ed59..14f6398eef1 100644
--- a/lisp/emacs-lisp/lmenu.el
+++ b/lisp/obsolete/lmenu.el
@@ -1,9 +1,10 @@
1;;; lmenu.el --- emulate Lucid's menubar support 1;;; lmenu.el --- emulate Lucid's menubar support
2 2
3;; Copyright (C) 1992, 1993, 1994, 1997, 2001, 2002, 2003, 2004, 3;; Copyright (C) 1992, 1993, 1994, 1997, 2001, 2002, 2003, 2004, 2005,
4;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. 4;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
5 5
6;; Keywords: emulations obsolete 6;; Keywords: emulations obsolete
7;; Obsolete-since: 23.3
7 8
8;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
9 10
@@ -22,6 +23,8 @@
22 23
23;;; Commentary: 24;;; Commentary:
24 25
26;; This file has been obsolete since Emacs 23.3.
27
25;;; Code: 28;;; Code:
26 29
27 30
@@ -439,5 +442,4 @@ BEFORE, if provided, is the name of a menu before which this menu should
439 442
440(provide 'lmenu) 443(provide 'lmenu)
441 444
442;; arch-tag: 7051c396-2837-435a-ae11-b2d2e2af8fc1
443;;; lmenu.el ends here 445;;; lmenu.el ends here
diff --git a/lisp/server.el b/lisp/server.el
index e661f055e1a..bc49087f464 100644
--- a/lisp/server.el
+++ b/lisp/server.el
@@ -859,7 +859,7 @@ The following commands are accepted by the client:
859 returned by -eval. 859 returned by -eval.
860 860
861`-error DESCRIPTION' 861`-error DESCRIPTION'
862 Signal an error (but continue processing). 862 Signal an error and delete process PROC.
863 863
864`-suspend' 864`-suspend'
865 Suspend this terminal, i.e., stop the client process. 865 Suspend this terminal, i.e., stop the client process.
diff --git a/lisp/vc/vc-svn.el b/lisp/vc/vc-svn.el
index 7718c4e5316..3e4c299f096 100644
--- a/lisp/vc/vc-svn.el
+++ b/lisp/vc/vc-svn.el
@@ -374,7 +374,7 @@ The changes are between FIRST-VERSION and SECOND-VERSION."
374 (message "Merging changes into %s..." file) 374 (message "Merging changes into %s..." file)
375 ;; (vc-file-setprop file 'vc-working-revision nil) 375 ;; (vc-file-setprop file 'vc-working-revision nil)
376 (vc-file-setprop file 'vc-checkout-time 0) 376 (vc-file-setprop file 'vc-checkout-time 0)
377 (vc-svn-command nil 0 file "update") 377 (vc-svn-command nil 0 file "--non-interactive" "update") ; see bug#7152
378 ;; Analyze the merge result reported by SVN, and set 378 ;; Analyze the merge result reported by SVN, and set
379 ;; file properties accordingly. 379 ;; file properties accordingly.
380 (with-current-buffer (get-buffer "*vc*") 380 (with-current-buffer (get-buffer "*vc*")
diff --git a/src/ChangeLog b/src/ChangeLog
index 2effe2ea84c..0bde3bb19fe 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,54 @@
12010-10-08 Kenichi Handa <handa@m17n.org>
2
3 * coding.c (complement_process_encoding_system): Fix previous change.
4
52010-10-08 Michael Albinus <michael.albinus@gmx.de>
6
7 * dbusbind.c (syms_of_dbusbind): Move putenv call ...
8 (Fdbus_init_bus): ... here. (Bug#7113)
9
102010-10-08 Glenn Morris <rgm@gnu.org>
11
12 * buffer.c (before-change-functions, after-change-functions):
13 Three-year overdue doc fix following 2007-08-13 change.
14
152010-10-08 Kenichi Handa <handa@m17n.org>
16
17 * coding.c (coding_inherit_eol_type): If parent doesn't specify
18 eol-format, inherit from the system's default.
19 (complement_process_encoding_system): Make a new coding system
20 inherit the original eol-format.
21
222010-10-08 Kenichi Handa <handa@m17n.org>
23
24 * coding.c (complement_process_encoding_system): New function.
25
26 * coding.h (complement_process_encoding_system): Extern it.
27
28 * callproc.c (Fcall_process): Complement the coding system for
29 encoding arguments.
30 (Fcall_process_region): Complement the coding system for encoding
31 the input to the process.
32
33 * process.c (Fstart_process): Complement the coding system for
34 encoding arguments.
35 (send_process): Complement the coding system for encoding what
36 sent to the process.
37
382010-10-08 Kenichi Handa <handa@m17n.org>
39
40 * xfont.c (xfont_open): Fix setting of font->average_width from
41 :avgwidth property (Bug#7123).
42
432010-10-08 Michael Albinus <michael.albinus@gmx.de>
44
45 * dbusbind.c (syms_of_dbusbind): Use putenv instead of setenv, it
46 is more portable.
47
48 * keyboard.c (gobble_input): Move call of xd_read_queued_messages ...
49 (kbd_buffer_get_event): ... here. This is needed for cygwin, which
50 has not defined SIGIO.
51
12010-10-08 Chong Yidong <cyd@stupidchicken.com> 522010-10-08 Chong Yidong <cyd@stupidchicken.com>
2 53
3 * xterm.c (x_draw_relief_rect): If box width is larger than 1, 54 * xterm.c (x_draw_relief_rect): If box width is larger than 1,
diff --git a/src/buffer.c b/src/buffer.c
index 3f087d62a5f..ed3b7acd2ac 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -5957,10 +5957,7 @@ No information is given about the length of the text after the change.
5957 5957
5958Buffer changes made while executing the `before-change-functions' 5958Buffer changes made while executing the `before-change-functions'
5959don't call any before-change or after-change functions. 5959don't call any before-change or after-change functions.
5960That's because these variables are temporarily set to nil. 5960That's because `inhibit-modification-hooks' is temporarily set non-nil.
5961As a result, a hook function cannot straightforwardly alter the
5962value of these variables. See the Emacs Lisp manual for a way of
5963accomplishing an equivalent result by using other variables.
5964 5961
5965If an unhandled error happens in running these functions, 5962If an unhandled error happens in running these functions,
5966the variable's value remains nil. That prevents the error 5963the variable's value remains nil. That prevents the error
@@ -5978,10 +5975,7 @@ and the post-change beginning and end are at the same place.)
5978 5975
5979Buffer changes made while executing the `after-change-functions' 5976Buffer changes made while executing the `after-change-functions'
5980don't call any before-change or after-change functions. 5977don't call any before-change or after-change functions.
5981That's because these variables are temporarily set to nil. 5978That's because `inhibit-modification-hooks' is temporarily set non-nil.
5982As a result, a hook function cannot straightforwardly alter the
5983value of these variables. See the Emacs Lisp manual for a way of
5984accomplishing an equivalent result by using other variables.
5985 5979
5986If an unhandled error happens in running these functions, 5980If an unhandled error happens in running these functions,
5987the variable's value remains nil. That prevents the error 5981the variable's value remains nil. That prevents the error
diff --git a/src/callproc.c b/src/callproc.c
index 29e13bbc4a7..ee0872b5562 100644
--- a/src/callproc.c
+++ b/src/callproc.c
@@ -254,21 +254,16 @@ usage: (call-process PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS) */)
254 if (!NILP (Vcoding_system_for_write)) 254 if (!NILP (Vcoding_system_for_write))
255 val = Vcoding_system_for_write; 255 val = Vcoding_system_for_write;
256 else if (! must_encode) 256 else if (! must_encode)
257 val = Qnil; 257 val = Qraw_text;
258 else 258 else
259 { 259 {
260 args2 = (Lisp_Object *) alloca ((nargs + 1) * sizeof *args2); 260 args2 = (Lisp_Object *) alloca ((nargs + 1) * sizeof *args2);
261 args2[0] = Qcall_process; 261 args2[0] = Qcall_process;
262 for (i = 0; i < nargs; i++) args2[i + 1] = args[i]; 262 for (i = 0; i < nargs; i++) args2[i + 1] = args[i];
263 coding_systems = Ffind_operation_coding_system (nargs + 1, args2); 263 coding_systems = Ffind_operation_coding_system (nargs + 1, args2);
264 if (CONSP (coding_systems)) 264 val = CONSP (coding_systems) ? XCDR (coding_systems) : Qnil;
265 val = XCDR (coding_systems);
266 else if (CONSP (Vdefault_process_coding_system))
267 val = XCDR (Vdefault_process_coding_system);
268 else
269 val = Qnil;
270 } 265 }
271 val = coding_inherit_eol_type (val, Qnil); 266 val = complement_process_encoding_system (val);
272 setup_coding_system (Fcheck_coding_system (val), &argument_coding); 267 setup_coding_system (Fcheck_coding_system (val), &argument_coding);
273 coding_attrs = CODING_ID_ATTRS (argument_coding.id); 268 coding_attrs = CODING_ID_ATTRS (argument_coding.id);
274 if (NILP (CODING_ATTR_ASCII_COMPAT (coding_attrs))) 269 if (NILP (CODING_ATTR_ASCII_COMPAT (coding_attrs)))
@@ -912,20 +907,16 @@ usage: (call-process-region START END PROGRAM &optional DELETE BUFFER DISPLAY &r
912 if (!NILP (Vcoding_system_for_write)) 907 if (!NILP (Vcoding_system_for_write))
913 val = Vcoding_system_for_write; 908 val = Vcoding_system_for_write;
914 else if (NILP (current_buffer->enable_multibyte_characters)) 909 else if (NILP (current_buffer->enable_multibyte_characters))
915 val = Qnil; 910 val = Qraw_text;
916 else 911 else
917 { 912 {
918 args2 = (Lisp_Object *) alloca ((nargs + 1) * sizeof *args2); 913 args2 = (Lisp_Object *) alloca ((nargs + 1) * sizeof *args2);
919 args2[0] = Qcall_process_region; 914 args2[0] = Qcall_process_region;
920 for (i = 0; i < nargs; i++) args2[i + 1] = args[i]; 915 for (i = 0; i < nargs; i++) args2[i + 1] = args[i];
921 coding_systems = Ffind_operation_coding_system (nargs + 1, args2); 916 coding_systems = Ffind_operation_coding_system (nargs + 1, args2);
922 if (CONSP (coding_systems)) 917 val = CONSP (coding_systems) ? XCDR (coding_systems) : Qnil;
923 val = XCDR (coding_systems);
924 else if (CONSP (Vdefault_process_coding_system))
925 val = XCDR (Vdefault_process_coding_system);
926 else
927 val = Qnil;
928 } 918 }
919 val = complement_process_encoding_system (val);
929 920
930 { 921 {
931 int count1 = SPECPDL_INDEX (); 922 int count1 = SPECPDL_INDEX ();
diff --git a/src/coding.c b/src/coding.c
index d6285ed9245..2cf32360096 100644
--- a/src/coding.c
+++ b/src/coding.c
@@ -6016,10 +6016,9 @@ raw_text_coding_system (Lisp_Object coding_system)
6016} 6016}
6017 6017
6018 6018
6019/* If CODING_SYSTEM doesn't specify end-of-line format but PARENT 6019/* If CODING_SYSTEM doesn't specify end-of-line format, return one of
6020 does, return one of the subsidiary that has the same eol-spec as 6020 the subsidiary that has the same eol-spec as PARENT (if it is not
6021 PARENT. Otherwise, return CODING_SYSTEM. If PARENT is nil, 6021 nil and specifies end-of-line format) or the system's setting
6022 inherit end-of-line format from the system's setting
6023 (system_eol_type). */ 6022 (system_eol_type). */
6024 6023
6025Lisp_Object 6024Lisp_Object
@@ -6041,6 +6040,8 @@ coding_inherit_eol_type (Lisp_Object coding_system, Lisp_Object parent)
6041 6040
6042 parent_spec = CODING_SYSTEM_SPEC (parent); 6041 parent_spec = CODING_SYSTEM_SPEC (parent);
6043 parent_eol_type = AREF (parent_spec, 2); 6042 parent_eol_type = AREF (parent_spec, 2);
6043 if (VECTORP (parent_eol_type))
6044 parent_eol_type = system_eol_type;
6044 } 6045 }
6045 else 6046 else
6046 parent_eol_type = system_eol_type; 6047 parent_eol_type = system_eol_type;
@@ -6054,6 +6055,45 @@ coding_inherit_eol_type (Lisp_Object coding_system, Lisp_Object parent)
6054 return coding_system; 6055 return coding_system;
6055} 6056}
6056 6057
6058
6059/* Check if text-conversion and eol-conversion of CODING_SYSTEM are
6060 decided for writing to a process. If not, complement them, and
6061 return a new coding system. */
6062
6063Lisp_Object
6064complement_process_encoding_system (Lisp_Object coding_system)
6065{
6066 Lisp_Object coding_base = Qnil, eol_base = Qnil;
6067 Lisp_Object spec, attrs;
6068 int i;
6069
6070 for (i = 0; i < 3; i++)
6071 {
6072 if (i == 1)
6073 coding_system = CDR_SAFE (Vdefault_process_coding_system);
6074 else if (i == 2)
6075 coding_system = preferred_coding_system ();
6076 spec = CODING_SYSTEM_SPEC (coding_system);
6077 if (NILP (spec))
6078 continue;
6079 attrs = AREF (spec, 0);
6080 if (NILP (coding_base) && ! EQ (CODING_ATTR_TYPE (attrs), Qundecided))
6081 coding_base = CODING_ATTR_BASE_NAME (attrs);
6082 if (NILP (eol_base) && ! VECTORP (AREF (spec, 2)))
6083 eol_base = coding_system;
6084 if (! NILP (coding_base) && ! NILP (eol_base))
6085 break;
6086 }
6087
6088 if (i > 0)
6089 /* The original CODING_SYSTEM didn't specify text-conversion or
6090 eol-conversion. Be sure that we return a fully complemented
6091 coding system. */
6092 coding_system = coding_inherit_eol_type (coding_base, eol_base);
6093 return coding_system;
6094}
6095
6096
6057/* Emacs has a mechanism to automatically detect a coding system if it 6097/* Emacs has a mechanism to automatically detect a coding system if it
6058 is one of Emacs' internal format, ISO2022, SJIS, and BIG5. But, 6098 is one of Emacs' internal format, ISO2022, SJIS, and BIG5. But,
6059 it's impossible to distinguish some coding systems accurately 6099 it's impossible to distinguish some coding systems accurately
diff --git a/src/coding.h b/src/coding.h
index 0caa5b2f96f..7233726a250 100644
--- a/src/coding.h
+++ b/src/coding.h
@@ -707,6 +707,7 @@ extern Lisp_Object code_convert_string_norecord (Lisp_Object, Lisp_Object,
707 int); 707 int);
708extern Lisp_Object raw_text_coding_system (Lisp_Object); 708extern Lisp_Object raw_text_coding_system (Lisp_Object);
709extern Lisp_Object coding_inherit_eol_type (Lisp_Object, Lisp_Object); 709extern Lisp_Object coding_inherit_eol_type (Lisp_Object, Lisp_Object);
710extern Lisp_Object complement_process_encoding_system (Lisp_Object);
710 711
711extern int decode_coding_gap (struct coding_system *, 712extern int decode_coding_gap (struct coding_system *,
712 EMACS_INT, EMACS_INT); 713 EMACS_INT, EMACS_INT);
diff --git a/src/dbusbind.c b/src/dbusbind.c
index 99a157fbc76..683b7cb583b 100644
--- a/src/dbusbind.c
+++ b/src/dbusbind.c
@@ -900,6 +900,9 @@ DEFUN ("dbus-init-bus", Fdbus_init_bus, Sdbus_init_bus, 1, 1, 0,
900 /* Add bus to list of registered buses. */ 900 /* Add bus to list of registered buses. */
901 Vdbus_registered_buses = Fcons (bus, Vdbus_registered_buses); 901 Vdbus_registered_buses = Fcons (bus, Vdbus_registered_buses);
902 902
903 /* We do not want to abort. */
904 putenv ("DBUS_FATAL_WARNINGS=0");
905
903 /* Return. */ 906 /* Return. */
904 return Qnil; 907 return Qnil;
905} 908}
@@ -2160,12 +2163,11 @@ be called when the D-Bus reply message arrives. */);
2160 doc: /* If non-nil, debug messages of D-Bus bindings are raised. */); 2163 doc: /* If non-nil, debug messages of D-Bus bindings are raised. */);
2161#ifdef DBUS_DEBUG 2164#ifdef DBUS_DEBUG
2162 Vdbus_debug = Qt; 2165 Vdbus_debug = Qt;
2163 /* We can also set environment DBUS_VERBOSE=1 in order to see more 2166 /* We can also set environment variable DBUS_VERBOSE=1 in order to
2164 traces. */ 2167 see more traces. This requires libdbus-1 to be configured with
2168 --enable-verbose-mode. */
2165#else 2169#else
2166 Vdbus_debug = Qnil; 2170 Vdbus_debug = Qnil;
2167 /* We do not want to abort. */
2168 setenv ("DBUS_FATAL_WARNINGS", "0", 1);
2169#endif 2171#endif
2170 2172
2171 Fprovide (intern_c_string ("dbusbind"), Qnil); 2173 Fprovide (intern_c_string ("dbusbind"), Qnil);
diff --git a/src/keyboard.c b/src/keyboard.c
index 9af26cd427d..b284244ac81 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -3952,6 +3952,11 @@ kbd_buffer_get_event (KBOARD **kbp,
3952 /* One way or another, wait until input is available; then, if 3952 /* One way or another, wait until input is available; then, if
3953 interrupt handlers have not read it, read it now. */ 3953 interrupt handlers have not read it, read it now. */
3954 3954
3955#ifdef HAVE_DBUS
3956 /* Read D-Bus messages. */
3957 xd_read_queued_messages ();
3958#endif /* HAVE_DBUS */
3959
3955/* Note SIGIO has been undef'd if FIONREAD is missing. */ 3960/* Note SIGIO has been undef'd if FIONREAD is missing. */
3956#ifdef SIGIO 3961#ifdef SIGIO
3957 gobble_input (0); 3962 gobble_input (0);
diff --git a/src/process.c b/src/process.c
index 370fb673e84..e1515065957 100644
--- a/src/process.c
+++ b/src/process.c
@@ -1670,6 +1670,11 @@ usage: (start-process NAME BUFFER PROGRAM &rest PROGRAM-ARGS) */)
1670 val = XCDR (Vdefault_process_coding_system); 1670 val = XCDR (Vdefault_process_coding_system);
1671 } 1671 }
1672 XPROCESS (proc)->encode_coding_system = val; 1672 XPROCESS (proc)->encode_coding_system = val;
1673 /* Note: At this momemnt, the above coding system may leave
1674 text-conversion or eol-conversion unspecified. They will be
1675 decided after we read output from the process and decode it by
1676 some coding system, or just before we actually send a text to
1677 the process. */
1673 } 1678 }
1674 1679
1675 1680
@@ -1712,6 +1717,7 @@ usage: (start-process NAME BUFFER PROGRAM &rest PROGRAM-ARGS) */)
1712 tem = Fsubstring (tem, make_number (2), Qnil); 1717 tem = Fsubstring (tem, make_number (2), Qnil);
1713 1718
1714 { 1719 {
1720 Lisp_Object arg_encoding = Qnil;
1715 struct gcpro gcpro1; 1721 struct gcpro gcpro1;
1716 GCPRO1 (tem); 1722 GCPRO1 (tem);
1717 1723
@@ -1729,9 +1735,14 @@ usage: (start-process NAME BUFFER PROGRAM &rest PROGRAM-ARGS) */)
1729 tem = Fcons (args[i], tem); 1735 tem = Fcons (args[i], tem);
1730 CHECK_STRING (XCAR (tem)); 1736 CHECK_STRING (XCAR (tem));
1731 if (STRING_MULTIBYTE (XCAR (tem))) 1737 if (STRING_MULTIBYTE (XCAR (tem)))
1732 XSETCAR (tem, 1738 {
1733 code_convert_string_norecord 1739 if (NILP (arg_encoding))
1734 (XCAR (tem), XPROCESS (proc)->encode_coding_system, 1)); 1740 arg_encoding = (complement_process_encoding_system
1741 (XPROCESS (proc)->encode_coding_system));
1742 XSETCAR (tem,
1743 code_convert_string_norecord
1744 (XCAR (tem), arg_encoding, 1));
1745 }
1735 } 1746 }
1736 1747
1737 UNGCPRO; 1748 UNGCPRO;
@@ -5529,12 +5540,21 @@ send_process (volatile Lisp_Object proc, const unsigned char *volatile buf,
5529 && !NILP (XBUFFER (object)->enable_multibyte_characters)) 5540 && !NILP (XBUFFER (object)->enable_multibyte_characters))
5530 || EQ (object, Qt)) 5541 || EQ (object, Qt))
5531 { 5542 {
5543 p->encode_coding_system
5544 = complement_process_encoding_system (p->encode_coding_system);
5532 if (!EQ (Vlast_coding_system_used, p->encode_coding_system)) 5545 if (!EQ (Vlast_coding_system_used, p->encode_coding_system))
5533 /* The coding system for encoding was changed to raw-text 5546 {
5534 because we sent a unibyte text previously. Now we are 5547 /* The coding system for encoding was changed to raw-text
5535 sending a multibyte text, thus we must encode it by the 5548 because we sent a unibyte text previously. Now we are
5536 original coding system specified for the current process. */ 5549 sending a multibyte text, thus we must encode it by the
5537 setup_coding_system (p->encode_coding_system, coding); 5550 original coding system specified for the current process.
5551
5552 Another reason we comming here is that the coding system
5553 was just complemented and new one was returned by
5554 complement_process_encoding_system. */
5555 setup_coding_system (p->encode_coding_system, coding);
5556 Vlast_coding_system_used = p->encode_coding_system;
5557 }
5538 coding->src_multibyte = 1; 5558 coding->src_multibyte = 1;
5539 } 5559 }
5540 else 5560 else
diff --git a/src/xfont.c b/src/xfont.c
index 0a7f4a3c97f..d4c6af17c49 100644
--- a/src/xfont.c
+++ b/src/xfont.c
@@ -841,7 +841,7 @@ xfont_open (FRAME_PTR f, Lisp_Object entity, int pixel_size)
841 841
842 val = Ffont_get (font_object, QCavgwidth); 842 val = Ffont_get (font_object, QCavgwidth);
843 if (INTEGERP (val)) 843 if (INTEGERP (val))
844 font->average_width = XINT (val); 844 font->average_width = XINT (val) / 10;
845 if (font->average_width < 0) 845 if (font->average_width < 0)
846 font->average_width = - font->average_width; 846 font->average_width = - font->average_width;
847 if (font->average_width == 0 847 if (font->average_width == 0