summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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 102866b0a8..8b93b2fb12 100644
--- a/doc/lispref/ChangeLog
+++ b/doc/lispref/ChangeLog
@@ -2458,6 +2458,12 @@
* display.texi (Images): Delete redundant @findex.
+2007-08-16 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * text.texi (Change Hooks): (after|before)-change-functions are no
+ longer bound to nil while running; rather inhibit-modification-hooks
+ is t.
+
2007-08-16 Richard Stallman <rms@gnu.org>
* processes.texi (Asynchronous Processes): Clarify
diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog
index 2971701b1f..b06cfe1394 100644
--- a/doc/misc/ChangeLog
+++ b/doc/misc/ChangeLog
@@ -1,3 +1,11 @@
+2010-10-08 Glenn Morris <rgm@gnu.org>
+
+ * cl.texi (Organization, Installation, Old CL Compatibility):
+ Deprecate cl-compat for new code.
+ (Usage, Installation): Remove outdated information.
+
+ * eudc.texi (CCSO PH/QI, LDAP Requirements): Remove old information.
+
2010-10-07 Katsumi Yamaoka <yamaoka@jpl.org>
* gnus.texi (Gravatars): Document gnus-gravatar-too-ugly.
diff --git a/doc/misc/cl.texi b/doc/misc/cl.texi
index de57ff7d09..79038792a3 100644
--- a/doc/misc/cl.texi
+++ b/doc/misc/cl.texi
@@ -163,19 +163,6 @@ include at the beginning:
@end example
@noindent
-If you want to ensure that the new (Gillespie) version of @dfn{CL}
-is the one that is present, add an additional @code{(require 'cl-19)}
-call:
-
-@example
-(require 'cl)
-(require 'cl-19)
-@end example
-
-@noindent
-The second call will fail (with ``@file{cl-19.el} not found'') if
-the old @file{cl.el} package was in use.
-
It is safe to arrange to load @dfn{CL} at all times, e.g.,
in your @file{.emacs} file. But it's a good idea, for portability,
to @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
needed.
There is another file, @file{cl-compat.el}, which defines some
-routines from the older @file{cl.el} package that are no longer
+routines from the older @file{cl.el} package that are not otherwise
present in the new package. This includes internal routines
like @code{setelt} and @code{zip-lists}, deprecated features
like @code{defkeyword}, and an emulation of the old-style
-multiple-values feature. @xref{Old CL Compatibility}.
+multiple-values feature. This file is obsolete and should not be used
+in new code. @xref{Old CL Compatibility}.
@node Installation, Naming Conventions, Organization, Overview
@section Installation
@noindent
-Installation of the @dfn{CL} package is simple: Just put the
-byte-compiled files @file{cl.elc}, @file{cl-extra.elc},
-@file{cl-seq.elc}, @file{cl-macs.elc}, and @file{cl-compat.elc}
-into a directory on your @code{load-path}.
-
-There are no special requirements to compile this package:
-The files do not have to be loaded before they are compiled,
-nor do they need to be compiled in any particular order.
-
-You may choose to put the files into your main @file{lisp/}
-directory, replacing the original @file{cl.el} file there. Or,
-you could put them into a directory that comes before @file{lisp/}
-on your @code{load-path} so that the old @file{cl.el} is
-effectively hidden.
-
-Also, format the @file{cl.texinfo} file and put the resulting
-Info files in the @file{info/} directory or another suitable place.
-
-You may instead wish to leave this package's components all in
-their own directory, and then add this directory to your
-@code{load-path} and @code{Info-directory-list}.
-Add the directory to the front of the list so the old @dfn{CL}
-package and its documentation are hidden.
+The @dfn{CL} package is distributed with Emacs, so there is no need
+to install anything.
+
+If you do need to install it, just put the byte-compiled files
+@file{cl.elc}, @file{cl-extra.elc}, @file{cl-seq.elc},
+@file{cl-macs.elc}, and (if necessary) @file{cl-compat.elc} into a
+directory on your @code{load-path}. Also, format the @file{cl.texi}
+file and put the resulting Info files into a directory in your
+@code{Info-directory-list}.
@node Naming Conventions, , Installation, Overview
@section Naming Conventions
@@ -5076,8 +5050,8 @@ Lisp.
@noindent
The @dfn{CL} package includes emulations of some features of the
old @file{cl.el}, in the form of a compatibility package
-@code{cl-compat}. To use it, put @code{(require 'cl-compat)} in
-your program.
+@code{cl-compat}. This file is obsolete and may be removed in future,
+so it should not be used in new code.
The old package defined a number of internal routines without
@code{cl-} prefixes or other annotations. Call to these routines
diff --git a/doc/misc/eudc.texi b/doc/misc/eudc.texi
index 48606e0d66..b62c0ed75e 100644
--- a/doc/misc/eudc.texi
+++ b/doc/misc/eudc.texi
@@ -137,7 +137,7 @@ complement to the DAP itself.
LDAP servers usually store (but are not limited to) information about
people such as their name, phone number, email address, office
location, etc@enddots{} More information about LDAP can be found at
-@url{http://www.openldap.org/}
+@url{http://www.openldap.org/}.
EUDC requires external support to access LDAP directory servers
(@pxref{LDAP Requirements})
@@ -148,17 +148,15 @@ EUDC requires external support to access LDAP directory servers
@section CCSO PH/QI
The Central Computing Services Office (CCSO) of the University of
-Illinois at Urbana Champaign (UIUC) created and freely distributes a
-directory system that is currently in use in more than 300 organizations
-around the world. The system records information about people such as
-their address, phone number, email, academic information or any other
-details it was configured to.
+Illinois at Urbana Champaign created and freely distributed a
+directory system that was used by many organizations in the 1990s.
+The system records information about people such as their address,
+phone number, email, academic information or any other details it was
+configured to. Nowadays this system is not widely used.
The system consists of two parts: a database server traditionally called
-@samp{qi} and a command-line client called @samp{ph}.
-@url{ftp://uiarchive.cso.uiuc.edu/pub/packages/ph} is the main
-distribution site. @url{http://www.uiuc.edu/cgi-bin/ph/lookup?Query=.}
-provides a listing of the active @samp{qi} servers.
+@samp{qi} and a command-line client called @samp{ph}. As of 2010, the
+code can still be downloaded from @url{http://www-dev.cites.uiuc.edu/ph/}.
The original command-line @samp{ph} client that comes with the
@samp{ph/qi} distribution provides additional features like the
@@ -225,18 +223,10 @@ email composition buffers (@pxref{Inline Query Expansion})
@comment node-name, next, previous, up
@section LDAP Requirements
-LDAP support is added by means of @file{ldap.el} which is part of Emacs.
+LDAP support is added by means of @file{ldap.el}, which is part of Emacs.
@file{ldap.el} needs an external command line utility named
-@file{ldapsearch} which is available as part of LDAP toolkits:
-
-@itemize @bullet
-@item
-Open LDAP Libraries
-(@url{http://www.openldap.org/})
-@item
-University of Michigan's LDAP Client software
-(@url{http://www.umich.edu/~dirsvcs/ldap/})
-@end itemize
+@file{ldapsearch}, available as part of Open LDAP
+(@url{http://www.openldap.org/}).
@node Usage, Credits, Installation, Top
@@ -968,7 +958,3 @@ in testing and proofreading the code and docs of @file{ph.el}.
@printindex vr
@bye
-
-@ignore
- arch-tag: 1b79460b-4ea1-441d-ab45-05ddd16ef241
-@end ignore
diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog
index 6d5bf6c4e5..50528a4508 100644
--- a/lib-src/ChangeLog
+++ b/lib-src/ChangeLog
@@ -1,3 +1,8 @@
+2010-10-08 Glenn Morris <rgm@gnu.org>
+
+ * emacsclient.c (set_local_socket) [DARWIN_OS]: Try as a fall-back
+ DARWIN_USER_TEMP_DIR. (Bug#3992)
+
2010-10-03 Dan Nicolaescu <dann@ics.uci.edu>
* test-distrib.c (cool_read):
diff --git a/lib-src/emacsclient.c b/lib-src/emacsclient.c
index b20710e110..b60b266180 100644
--- a/lib-src/emacsclient.c
+++ b/lib-src/emacsclient.c
@@ -1223,7 +1223,18 @@ set_local_socket (void)
{
tmpdir = egetenv ("TMPDIR");
if (!tmpdir)
- tmpdir = "/tmp";
+ {
+#ifdef DARWIN_OS
+ size_t n = confstr (_CS_DARWIN_USER_TEMP_DIR, NULL, (size_t) 0);
+ if (n > 0)
+ {
+ tmpdir = alloca (n);
+ confstr (_CS_DARWIN_USER_TEMP_DIR, tmpdir, n);
+ }
+ else
+#endif
+ tmpdir = "/tmp";
+ }
socket_name = alloca (strlen (tmpdir) + strlen (server_name)
+ EXTRA_SPACE);
sprintf (socket_name, "%s/emacs%d/%s",
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 43589198be..9dfd7d289f 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,5 +1,51 @@
2010-10-08 Glenn Morris <rgm@gnu.org>
+ * emacs-lisp/cl-compat.el, emacs-lisp/lmenu.el: Move to obsolete/.
+
+ * emacs-lisp/shadow.el (lisp-shadow): Change prefix.
+ (shadows-compare-text-p): Make it an obsolete alias for...
+ (load-path-shadows-compare-text): ... new name.
+ (find-emacs-lisp-shadows): Update for above name change.
+ (load-path-shadows-same-file-or-nonexistent): New name for the old
+ shadow-same-file-or-nonexistent.
+
+2010-10-08 Chong Yidong <cyd@stupidchicken.com>
+
+ * minibuffer.el (completion--some, completion--do-completion)
+ (minibuffer-complete-and-exit, minibuffer-completion-help)
+ (completion-basic-try-completion)
+ (completion-basic-all-completions)
+ (completion-pcm--find-all-completions): Use lexical-let to
+ avoid some false matches in variable completion (Bug#7056)
+
+2010-10-08 Olof Ohlsson Sax <olof.ohlsson.sax@gmail.com> (tiny change)
+
+ * vc-svn.el (vc-svn-merge-news): Use --non-interactive. (Bug#7152)
+
+2010-10-08 Leo <sdl.web@gmail.com>
+
+ * dnd.el (dnd-get-local-file-name): If MUST-EXIST is non-nil, only
+ return non-nil if the file exists (Bug#7090).
+
+2010-10-08 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * minibuffer.el (completion--replace):
+ Better preserve markers (bug#7138).
+
+2010-10-08 Juanma Barranquero <lekktu@gmail.com>
+
+ * server.el (server-process-filter): Doc fix.
+
+2010-10-08 Drew Adams <drew.adams@oracle.com>
+
+ * dired.el (dired-save-positions): Doc fix. (Bug#7119)
+
+2010-10-08 Andreas Schwab <schwab@linux-m68k.org>
+
+ * Makefile.in (ELCFILES): Update.
+
+2010-10-08 Glenn Morris <rgm@gnu.org>
+
* vc/ediff-wind.el (ediff-setup-control-frame):
* vc/ediff-ptch.el (ediff-default-backup-extension):
* vc/ediff-diff.el (ediff-shell, ediff-diff-options)
diff --git a/lisp/cedet/ChangeLog b/lisp/cedet/ChangeLog
index 85f0410541..5617be568d 100644
--- a/lisp/cedet/ChangeLog
+++ b/lisp/cedet/ChangeLog
@@ -1,3 +1,32 @@
+2010-09-30 Chong Yidong <cyd@stupidchicken.com>
+
+ * semantic/bovine/el.el:
+ * semantic/mru-bookmark.el (global-semantic-mru-bookmark-mode):
+ Fix require statements.
+
+2010-09-29 Chong Yidong <cyd@stupidchicken.com>
+
+ * semantic/tag.el (semantic-tag-version): Bump to 2.0.
+
+ * semantic/db-typecache.el (semanticdb-typecache-find-default):
+ * semantic/imenu.el (semantic-create-imenu-index):
+ * semantic/grammar.el (semantic--grammar-macro-function-tag):
+ * semantic/fw.el (semanticdb-without-unloaded-file-searches): Fix
+ require. Suggested by David Engster.
+
+ * semantic/bovine/c-by.el: Regenerate.
+
+2010-09-29 Eric Ludlam <zappo@gnu.org>
+
+ * semantic/lex-spp.el (semantic-lex-spp-debug-symbol): New var.
+ (semantic-lex-spp-enable-debug-symbol): New command
+ (semantic-lex-spp-value-valid-p)
+ (semantic-lex-spp-validate-value): New functions
+ (semantic-lex-spp-symbol-set)
+ (semantic-lex-spp-symbol-push): Add call to validate value.
+ (semantic-lex-spp-table-write-slot-value): Instead of erroring on
+ invalid values during save, just save a nil.
+
2010-09-25 Chong Yidong <cyd@stupidchicken.com>
* ede/linux.el (ede-project-class-files):
@@ -465,11 +494,6 @@
(ede-dired-minor-mode): Use define-minor-mode and derived-mode-p.
(ede-dired-add-to-target): Use dolist.
-2010-04-18 Chong Yidong <cyd@stupidchicken.com>
-
- * ede/pmake.el (ede-proj-makefile-insert-variables):
- Don't destroy list before using it.
-
2010-04-29 Chong Yidong <cyd@stupidchicken.com>
* 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 09fb42261a..c33f3fb67f 100644
--- a/lisp/cedet/semantic/bovine/c-by.el
+++ b/lisp/cedet/semantic/bovine/c-by.el
@@ -1240,7 +1240,9 @@
(nth 7 vals))
(nth 0 vals)
(nth 10 vals)
- (nth 4 vals))
+ (list
+ (nth 4 vals))
+ (nth 9 vals))
)
(opt-stars
opt-class
@@ -1262,7 +1264,9 @@
(nth 6 vals))
(nth 0 vals)
(nth 9 vals)
- (nth 4 vals))
+ (list
+ (nth 4 vals))
+ (nth 8 vals))
)
) ;; end func-decl
@@ -1433,13 +1437,11 @@
namespace-symbol
opt-bits
opt-array
- opt-assign
,(semantic-lambda
(nth 2 vals)
(nth 0 vals)
(nth 3 vals)
- (nth 4 vals)
- (nth 5 vals))
+ (nth 4 vals))
)
) ;; end varname
@@ -1484,19 +1486,28 @@
)
) ;; end variablearg-opt-name
+ (varname-opt-initializer
+ (semantic-list)
+ (opt-assign)
+ ( ;;EMPTY
+ )
+ ) ;; end varname-opt-initializer
+
(varnamelist
(opt-ref
varname
+ varname-opt-initializer
punctuation
"\\`[,]\\'"
varnamelist
,(semantic-lambda
(cons
(nth 1 vals)
- (nth 3 vals)))
+ (nth 4 vals)))
)
(opt-ref
varname
+ varname-opt-initializer
,(semantic-lambda
(list
(nth 1 vals)))
@@ -2108,74 +2119,64 @@
"\\`[&]\\'")
) ;; end expr-start
+ (expr-binop
+ (punctuation
+ "\\`[-]\\'")
+ (punctuation
+ "\\`[+]\\'")
+ (punctuation
+ "\\`[*]\\'")
+ (punctuation
+ "\\`[/]\\'")
+ (punctuation
+ "\\`[&]\\'"
+ punctuation
+ "\\`[&]\\'")
+ (punctuation
+ "\\`[&]\\'")
+ (punctuation
+ "\\`[|]\\'"
+ punctuation
+ "\\`[|]\\'")
+ (punctuation
+ "\\`[|]\\'")
+ ) ;; end expr-binop
+
(expression
- (number
+ (unaryexpression
+ expr-binop
+ unaryexpression
,(semantic-lambda
(list
(identity start)
(identity end)))
)
- (multi-stage-dereference
+ (unaryexpression
,(semantic-lambda
(list
(identity start)
(identity end)))
)
+ ) ;; end expression
+
+ (unaryexpression
+ (number)
+ (multi-stage-dereference)
(NEW
- multi-stage-dereference
- ,(semantic-lambda
- (list
- (identity start)
- (identity end)))
- )
+ multi-stage-dereference)
(NEW
builtintype-types
- semantic-list
- ,(semantic-lambda
- (list
- (identity start)
- (identity end)))
- )
- (namespace-symbol
- ,(semantic-lambda
- (list
- (identity start)
- (identity end)))
- )
- (string-seq
- ,(semantic-lambda
- (list
- (identity start)
- (identity end)))
- )
+ semantic-list)
+ (namespace-symbol)
+ (string-seq)
(type-cast
- expression
- ,(semantic-lambda
- (list
- (identity start)
- (identity end)))
- )
- (semantic-list
- expression
- ,(semantic-lambda
- (list
- (identity start)
- (identity end)))
- )
+ expression)
(semantic-list
- ,(semantic-lambda
- (list
- (identity start)
- (identity end)))
- )
+ expression)
+ (semantic-list)
(expr-start
- expression
- ,(semantic-lambda
- (list
- (identity start)
- (identity end)))
- )
- ) ;; end expression
+ expression)
+ ) ;; end unaryexpression
)
"Parser table.")
diff --git a/lisp/cedet/semantic/bovine/el.el b/lisp/cedet/semantic/bovine/el.el
index 5b5a5660b7..ed1f74c590 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.")
(add-hook 'lisp-mode-hook 'semantic-default-elisp-setup)
(eval-after-load "semanticdb"
- '(require 'semanticdb-el)
+ '(require 'semantic/db-el)
)
(provide 'semantic/bovine/el)
diff --git a/lisp/cedet/semantic/db-typecache.el b/lisp/cedet/semantic/db-typecache.el
index 71b15fdf82..59ba83fe9d 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.
PATH is the search path, which should be one table object.
If FIND-FILE-MATCH is non-nil, then force the file belonging to the
found tag to be loaded."
- (if (not (and (featurep 'semanticdb) semanticdb-current-database))
+ (if (not (and (featurep 'semantic/db) semanticdb-current-database))
nil ;; No DB, no search
(save-excursion
(semanticdb-typecache-find-method (or path semanticdb-current-table)
diff --git a/lisp/cedet/semantic/fw.el b/lisp/cedet/semantic/fw.el
index 4979086163..811508377b 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'"
(defmacro semanticdb-without-unloaded-file-searches (forms)
"Execute FORMS with `unloaded' removed from the current throttle."
`(let ((semanticdb-find-default-throttle
- (if (featurep 'semanticdb-find)
+ (if (featurep 'semantic/db-find)
(remq 'unloaded semanticdb-find-default-throttle)
nil)))
,forms))
diff --git a/lisp/cedet/semantic/grammar.el b/lisp/cedet/semantic/grammar.el
index 65365768f9..d99ae0cb0a 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."
(car (semantic-find-tags-by-class
'function
(or (semantic-find-tags-by-name name (current-buffer))
- (and (featurep 'semanticdb)
+ (and (featurep 'semantic/db)
semanticdb-current-database
(cdar (semanticdb-find-tags-by-name name nil t)))))))
diff --git a/lisp/cedet/semantic/imenu.el b/lisp/cedet/semantic/imenu.el
index e38b50bcd5..465a93a16d 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."
(setq imenu-default-goto-function 'semantic-imenu-goto-function)
(prog1
(if (and semantic-imenu-index-directory
- (featurep 'semanticdb)
+ (featurep 'semantic/db)
(semanticdb-minor-mode-p))
(semantic-create-imenu-directory-index
(or stream (semantic-fetch-tags-fast)))
diff --git a/lisp/cedet/semantic/lex-spp.el b/lisp/cedet/semantic/lex-spp.el
index 88b77e50e1..0b4fa930b1 100644
--- a/lisp/cedet/semantic/lex-spp.el
+++ b/lisp/cedet/semantic/lex-spp.el
@@ -173,10 +173,42 @@ The search priority is:
(setq semantic-lex-spp-dynamic-macro-symbol-obarray-stack
(make-vector 13 0))))
+(defun semantic-lex-spp-value-valid-p (value)
+ "Return non-nil if VALUE is valid."
+ (or (null value)
+ (stringp value)
+ (and (consp value)
+ (or (semantic-lex-token-p (car value))
+ (eq (car (car value)) 'spp-arg-list)))))
+
+(defvar semantic-lex-spp-debug-symbol nil
+ "A symbol to break on if it is being set somewhere.")
+
+(defun semantic-lex-spp-enable-debug-symbol (sym)
+ "Enable debugging for symbol SYM.
+Disable debugging by entering nothing."
+ (interactive "sSymbol: ")
+ (if (string= sym "")
+ (setq semantic-lex-spp-debug-symbol nil)
+ (setq semantic-lex-spp-debug-symbol sym)))
+
+(defmacro semantic-lex-spp-validate-value (name value)
+ "Validate the NAME and VALUE of a macro before it is set."
+; `(progn
+; (when (not (semantic-lex-spp-value-valid-p ,value))
+; (error "Symbol \"%s\" with bogus value %S" ,name ,value))
+; (when (and semantic-lex-spp-debug-symbol
+; (string= semantic-lex-spp-debug-symbol name))
+; (debug))
+; )
+ nil
+ )
+
(defun semantic-lex-spp-symbol-set (name value &optional obarray-in)
"Set value of spp symbol with NAME to VALUE and return VALUE.
If optional OBARRAY-IN is non-nil, then use that obarray instead of
the dynamic map."
+ (semantic-lex-spp-validate-value name value)
(if (and (stringp value) (string= value "")) (setq value nil))
(set (intern name (or obarray-in
(semantic-lex-spp-dynamic-map)))
@@ -192,6 +224,7 @@ the dynamic map."
(defun semantic-lex-spp-symbol-push (name value)
"Push macro NAME with VALUE into the map.
Reverse with `semantic-lex-spp-symbol-pop'."
+ (semantic-lex-spp-validate-value name value)
(let* ((map (semantic-lex-spp-dynamic-map))
(stack (semantic-lex-spp-dynamic-map-stack))
(mapsym (intern name map))
diff --git a/lisp/cedet/semantic/mru-bookmark.el b/lisp/cedet/semantic/mru-bookmark.el
index 12e0cb9f83..b723a848c1 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."
;;
;; Tracking minor mode.
+(defcustom global-semantic-mru-bookmark-mode nil
+ "If non-nil, enable `semantic-mru-bookmark-mode' globally.
+When this mode is enabled, Emacs keeps track of which tags have
+been edited, and you can re-visit them with \\[semantic-mrub-switch-tags]."
+ :group 'semantic
+ :group 'semantic-modes
+ :type 'boolean
+ :require 'semantic/util-modes
+ :initialize 'custom-initialize-default
+ :set (lambda (sym val)
+ (global-semantic-mru-bookmark-mode (if val 1 -1))))
+
;;;###autoload
(define-minor-mode global-semantic-mru-bookmark-mode
"Toggle global use of option `semantic-mru-bookmark-mode'.
diff --git a/lisp/cedet/semantic/tag.el b/lisp/cedet/semantic/tag.el
index e9094fcb05..0195a29b66 100644
--- a/lisp/cedet/semantic/tag.el
+++ b/lisp/cedet/semantic/tag.el
@@ -53,7 +53,7 @@
(declare-function semantic-fetch-tags "semantic")
(declare-function semantic-clear-toplevel-cache "semantic")
-(defconst semantic-tag-version "2.0pre7"
+(defconst semantic-tag-version "2.0"
"Version string of semantic tags made with this code.")
(defconst semantic-tag-incompatible-version "1.0"
@@ -221,6 +221,7 @@ See also the function `semantic-ctxt-current-mode'."
;; beginning of TAG.
(or (and (>= (point) start) (< (point) end))
(goto-char start))
+ (require 'semantic/ctxt)
(semantic-ctxt-current-mode)))))
(defsubst semantic--tag-attributes-cdr (tag)
diff --git a/lisp/dired.el b/lisp/dired.el
index 3fdb82ca7d..f840b60ab0 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -1178,7 +1178,7 @@ Preserves old cursor, marks/flags, hidden-p."
The positions have the form (BUFFER-POSITION WINDOW-POSITIONS).
BUFFER-POSITION is the point position in the current dired buffer.
-The buffer position have the form (BUFFER DIRED-FILENAME BUFFER-POINT).
+It has the form (BUFFER DIRED-FILENAME BUFFER-POINT).
WINDOW-POSITIONS are current positions in all windows displaying
this dired buffer. The window positions have the form (WINDOW
diff --git a/lisp/dnd.el b/lisp/dnd.el
index 7b9d0c0786..cbbef38443 100644
--- a/lisp/dnd.el
+++ b/lisp/dnd.el
@@ -155,10 +155,11 @@ Return nil if URI is not a local file."
(let* ((decoded-f (decode-coding-string
f
(or file-name-coding-system
- default-file-name-coding-system)))
- (try-f (if (file-readable-p decoded-f) decoded-f f)))
- (when (file-readable-p try-f) try-f)))))
-
+ default-file-name-coding-system))))
+ (setq f (cond ((file-readable-p decoded-f) decoded-f)
+ ((file-readable-p f) f)
+ (t nil)))))
+ f))
(defun dnd-open-local-file (uri action)
"Open a local file.
diff --git a/lisp/emacs-lisp/shadow.el b/lisp/emacs-lisp/shadow.el
index ee59cca2d6..850c1e8968 100644
--- a/lisp/emacs-lisp/shadow.el
+++ b/lisp/emacs-lisp/shadow.el
@@ -53,10 +53,13 @@
(defgroup lisp-shadow nil
"Locate Emacs Lisp file shadowings."
- :prefix "shadows-"
+ :prefix "load-path-shadows-"
:group 'lisp)
-(defcustom shadows-compare-text-p nil
+(define-obsolete-variable-alias 'shadows-compare-text-p
+ 'load-path-shadows-compare-text "23.3")
+
+(defcustom load-path-shadows-compare-text nil
"If non-nil, then shadowing files are reported only if their text differs.
This is slower, but filters out some innocuous shadowing."
:type 'boolean
@@ -124,11 +127,11 @@ See the documentation for `list-load-path-shadows' for further information."
;; Report it unless the files are identical.
(let ((base1 (concat (cdr orig-dir) "/" file))
(base2 (concat dir "/" file)))
- (if (not (and shadows-compare-text-p
- (shadow-same-file-or-nonexistent
+ (if (not (and load-path-shadows-compare-text
+ (load-path-shadows-same-file-or-nonexistent
(concat base1 ".el") (concat base2 ".el"))
;; This is a bit strict, but safe.
- (shadow-same-file-or-nonexistent
+ (load-path-shadows-same-file-or-nonexistent
(concat base1 ".elc") (concat base2 ".elc"))))
(setq shadows
(append shadows (list base1 base2)))))
@@ -140,7 +143,7 @@ See the documentation for `list-load-path-shadows' for further information."
;; Return true if neither file exists, or if both exist and have identical
;; contents.
-(defun shadow-same-file-or-nonexistent (f1 f2)
+(defun load-path-shadows-same-file-or-nonexistent (f1 f2)
(let ((exists1 (file-exists-p f1))
(exists2 (file-exists-p f2)))
(or (and (not exists1) (not exists2))
diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el
index f7dc035a88..98380f3926 100644
--- a/lisp/minibuffer.el
+++ b/lisp/minibuffer.el
@@ -133,8 +133,8 @@ the closest directory separators."
"Apply FUN to each element of XS in turn.
Return the first non-nil returned value.
Like CL's `some'."
- (let ((firsterror nil)
- res)
+ (lexical-let ((firsterror nil)
+ res)
(while (and (not res) xs)
(condition-case err
(setq res (funcall fun (pop xs)))
@@ -485,10 +485,30 @@ in the last `cdr'."
(defun completion--replace (beg end newtext)
"Replace the buffer text between BEG and END with NEWTEXT.
Moves point to the end of the new text."
- ;; This should be in subr.el.
+ ;; Maybe this should be in subr.el.
;; You'd think this is trivial to do, but details matter if you want
;; to keep markers "at the right place" and be robust in the face of
;; after-change-functions that may themselves modify the buffer.
+ (let ((prefix-len 0))
+ ;; Don't touch markers in the shared prefix (if any).
+ (while (and (< prefix-len (length newtext))
+ (< (+ beg prefix-len) end)
+ (eq (char-after (+ beg prefix-len))
+ (aref newtext prefix-len)))
+ (setq prefix-len (1+ prefix-len)))
+ (unless (zerop prefix-len)
+ (setq beg (+ beg prefix-len))
+ (setq newtext (substring newtext prefix-len))))
+ (let ((suffix-len 0))
+ ;; Don't touch markers in the shared suffix (if any).
+ (while (and (< suffix-len (length newtext))
+ (< beg (- end suffix-len))
+ (eq (char-before (- end suffix-len))
+ (aref newtext (- (length newtext) suffix-len 1))))
+ (setq suffix-len (1+ suffix-len)))
+ (unless (zerop suffix-len)
+ (setq end (- end suffix-len))
+ (setq newtext (substring newtext 0 (- suffix-len)))))
(goto-char beg)
(insert newtext)
(delete-region (point) (+ (point) (- end beg))))
@@ -520,15 +540,16 @@ E = after completion we now have an Exact match.
101 5 ??? impossible
110 6 some completion happened
111 7 completed to an exact completion"
- (let* ((beg (field-beginning))
- (end (field-end))
- (string (buffer-substring beg end))
- (comp (funcall (or try-completion-function
- 'completion-try-completion)
- string
- minibuffer-completion-table
- minibuffer-completion-predicate
- (- (point) beg))))
+ (lexical-let*
+ ((beg (field-beginning))
+ (end (field-end))
+ (string (buffer-substring beg end))
+ (comp (funcall (or try-completion-function
+ 'completion-try-completion)
+ string
+ minibuffer-completion-table
+ minibuffer-completion-predicate
+ (- (point) beg))))
(cond
((null comp)
(minibuffer-hide-completions)
@@ -541,14 +562,15 @@ E = after completion we now have an Exact match.
;; `completed' should be t if some completion was done, which doesn't
;; include simply changing the case of the entered string. However,
;; for appearance, the string is rewritten if the case changes.
- (let* ((comp-pos (cdr comp))
- (completion (car comp))
- (completed (not (eq t (compare-strings completion nil nil
- string nil nil t))))
- (unchanged (eq t (compare-strings completion nil nil
- string nil nil nil))))
+ (lexical-let*
+ ((comp-pos (cdr comp))
+ (completion (car comp))
+ (completed (not (eq t (compare-strings completion nil nil
+ string nil nil t))))
+ (unchanged (eq t (compare-strings completion nil nil
+ string nil nil nil))))
(if unchanged
- (goto-char end)
+ (goto-char end)
;; Insert in minibuffer the chars we got.
(completion--replace beg end completion))
;; Move point to its completion-mandated destination.
@@ -729,8 +751,8 @@ If `minibuffer-completion-confirm' is `confirm-after-completion',
`minibuffer-confirm-exit-commands', and accept the input
otherwise."
(interactive)
- (let ((beg (field-beginning))
- (end (field-end)))
+ (lexical-let ((beg (field-beginning))
+ (end (field-end)))
(cond
;; Allow user to specify null string
((= beg end) (exit-minibuffer))
@@ -1107,14 +1129,13 @@ variables.")
"Display a list of possible completions of the current minibuffer contents."
(interactive)
(message "Making completion list...")
- (let* ((non-essential t)
- (start (field-beginning))
- (string (field-string))
- (completions (completion-all-completions
- string
- minibuffer-completion-table
- minibuffer-completion-predicate
- (- (point) (field-beginning)))))
+ (lexical-let* ((start (field-beginning))
+ (string (field-string))
+ (completions (completion-all-completions
+ string
+ minibuffer-completion-table
+ minibuffer-completion-predicate
+ (- (point) (field-beginning)))))
(message nil)
(if (and completions
(or (consp (cdr completions))
@@ -1767,9 +1788,10 @@ Return the new suffix."
(substring afterpoint 0 (cdr bounds)))))
(defun completion-basic-try-completion (string table pred point)
- (let* ((beforepoint (substring string 0 point))
- (afterpoint (substring string point))
- (bounds (completion-boundaries beforepoint table pred afterpoint)))
+ (lexical-let*
+ ((beforepoint (substring string 0 point))
+ (afterpoint (substring string point))
+ (bounds (completion-boundaries beforepoint table pred afterpoint)))
(if (zerop (cdr bounds))
;; `try-completion' may return a subtly different result
;; than `all+merge', so try to use it whenever possible.
@@ -1780,22 +1802,30 @@ Return the new suffix."
(concat completion
(completion--merge-suffix completion point afterpoint))
(length completion))))
- (let* ((suffix (substring afterpoint (cdr bounds)))
- (prefix (substring beforepoint 0 (car bounds)))
- (pattern (completion-basic--pattern
- beforepoint afterpoint bounds))
- (all (completion-pcm--all-completions prefix pattern table pred)))
+ (lexical-let*
+ ((suffix (substring afterpoint (cdr bounds)))
+ (prefix (substring beforepoint 0 (car bounds)))
+ (pattern (delete
+ "" (list (substring beforepoint (car bounds))
+ 'point
+ (substring afterpoint 0 (cdr bounds)))))
+ (all (completion-pcm--all-completions prefix pattern table pred)))
(if minibuffer-completing-file-name
(setq all (completion-pcm--filename-try-filter all)))
(completion-pcm--merge-try pattern all prefix suffix)))))
(defun completion-basic-all-completions (string table pred point)
- (let* ((beforepoint (substring string 0 point))
- (afterpoint (substring string point))
- (bounds (completion-boundaries beforepoint table pred afterpoint))
- (prefix (substring beforepoint 0 (car bounds)))
- (pattern (completion-basic--pattern beforepoint afterpoint bounds))
- (all (completion-pcm--all-completions prefix pattern table pred)))
+ (lexical-let*
+ ((beforepoint (substring string 0 point))
+ (afterpoint (substring string point))
+ (bounds (completion-boundaries beforepoint table pred afterpoint))
+ (suffix (substring afterpoint (cdr bounds)))
+ (prefix (substring beforepoint 0 (car bounds)))
+ (pattern (delete
+ "" (list (substring beforepoint (car bounds))
+ 'point
+ (substring afterpoint 0 (cdr bounds)))))
+ (all (completion-pcm--all-completions prefix pattern table pred)))
(completion-hilit-commonality all point (car bounds))))
;;; Partial-completion-mode style completion.
@@ -1958,12 +1988,13 @@ POINT is a position inside STRING.
FILTER is a function applied to the return value, that can be used, e.g. to
filter out additional entries (because TABLE migth not obey PRED)."
(unless filter (setq filter 'identity))
- (let* ((beforepoint (substring string 0 point))
- (afterpoint (substring string point))
- (bounds (completion-boundaries beforepoint table pred afterpoint))
- (prefix (substring beforepoint 0 (car bounds)))
- (suffix (substring afterpoint (cdr bounds)))
- firsterror)
+ (lexical-let*
+ ((beforepoint (substring string 0 point))
+ (afterpoint (substring string point))
+ (bounds (completion-boundaries beforepoint table pred afterpoint))
+ (prefix (substring beforepoint 0 (car bounds)))
+ (suffix (substring afterpoint (cdr bounds)))
+ firsterror)
(setq string (substring string (car bounds) (+ point (cdr bounds))))
(let* ((relpoint (- point (car bounds)))
(pattern (completion-pcm--string->pattern string relpoint))
diff --git a/lisp/emacs-lisp/cl-compat.el b/lisp/obsolete/cl-compat.el
index f4923b6f8c..622c4eaace 100644
--- a/lisp/emacs-lisp/cl-compat.el
+++ b/lisp/obsolete/cl-compat.el
@@ -1,12 +1,12 @@
;;; cl-compat.el --- Common Lisp extensions for GNU Emacs Lisp (compatibility)
-;; Copyright (C) 1993, 2001, 2002, 2003, 2004, 2005,
-;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
+;; 2009, 2010 Free Software Foundation, Inc.
;; Author: Dave Gillespie <daveg@synaptics.com>
;; Version: 2.02
;; Keywords: extensions
-;; Package: emacs
+;; Obsolete-since: 23.3
;; This file is part of GNU Emacs.
@@ -25,6 +25,8 @@
;;; Commentary:
+;; This file has been obsolete since Emacs 23.3.
+
;; These are extensions to Emacs Lisp that provide a degree of
;; Common Lisp compatibility, beyond what is already built-in
;; in Emacs Lisp.
@@ -195,5 +197,4 @@
;; byte-compile-warnings: (not cl-functions)
;; End:
-;; arch-tag: 9996bb4f-aaf5-4592-b436-bf64759a3163
;;; cl-compat.el ends here
diff --git a/lisp/emacs-lisp/lmenu.el b/lisp/obsolete/lmenu.el
index 54fb488ed5..14f6398eef 100644
--- a/lisp/emacs-lisp/lmenu.el
+++ b/lisp/obsolete/lmenu.el
@@ -1,9 +1,10 @@
;;; lmenu.el --- emulate Lucid's menubar support
-;; Copyright (C) 1992, 1993, 1994, 1997, 2001, 2002, 2003, 2004,
-;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1992, 1993, 1994, 1997, 2001, 2002, 2003, 2004, 2005,
+;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
;; Keywords: emulations obsolete
+;; Obsolete-since: 23.3
;; This file is part of GNU Emacs.
@@ -22,6 +23,8 @@
;;; Commentary:
+;; This file has been obsolete since Emacs 23.3.
+
;;; Code:
@@ -439,5 +442,4 @@ BEFORE, if provided, is the name of a menu before which this menu should
(provide 'lmenu)
-;; arch-tag: 7051c396-2837-435a-ae11-b2d2e2af8fc1
;;; lmenu.el ends here
diff --git a/lisp/server.el b/lisp/server.el
index e661f055e1..bc49087f46 100644
--- a/lisp/server.el
+++ b/lisp/server.el
@@ -859,7 +859,7 @@ The following commands are accepted by the client:
returned by -eval.
`-error DESCRIPTION'
- Signal an error (but continue processing).
+ Signal an error and delete process PROC.
`-suspend'
Suspend this terminal, i.e., stop the client process.
diff --git a/lisp/vc/vc-svn.el b/lisp/vc/vc-svn.el
index 7718c4e531..3e4c299f09 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."
(message "Merging changes into %s..." file)
;; (vc-file-setprop file 'vc-working-revision nil)
(vc-file-setprop file 'vc-checkout-time 0)
- (vc-svn-command nil 0 file "update")
+ (vc-svn-command nil 0 file "--non-interactive" "update") ; see bug#7152
;; Analyze the merge result reported by SVN, and set
;; file properties accordingly.
(with-current-buffer (get-buffer "*vc*")
diff --git a/src/ChangeLog b/src/ChangeLog
index 2effe2ea84..0bde3bb19f 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,54 @@
+2010-10-08 Kenichi Handa <handa@m17n.org>
+
+ * coding.c (complement_process_encoding_system): Fix previous change.
+
+2010-10-08 Michael Albinus <michael.albinus@gmx.de>
+
+ * dbusbind.c (syms_of_dbusbind): Move putenv call ...
+ (Fdbus_init_bus): ... here. (Bug#7113)
+
+2010-10-08 Glenn Morris <rgm@gnu.org>
+
+ * buffer.c (before-change-functions, after-change-functions):
+ Three-year overdue doc fix following 2007-08-13 change.
+
+2010-10-08 Kenichi Handa <handa@m17n.org>
+
+ * coding.c (coding_inherit_eol_type): If parent doesn't specify
+ eol-format, inherit from the system's default.
+ (complement_process_encoding_system): Make a new coding system
+ inherit the original eol-format.
+
+2010-10-08 Kenichi Handa <handa@m17n.org>
+
+ * coding.c (complement_process_encoding_system): New function.
+
+ * coding.h (complement_process_encoding_system): Extern it.
+
+ * callproc.c (Fcall_process): Complement the coding system for
+ encoding arguments.
+ (Fcall_process_region): Complement the coding system for encoding
+ the input to the process.
+
+ * process.c (Fstart_process): Complement the coding system for
+ encoding arguments.
+ (send_process): Complement the coding system for encoding what
+ sent to the process.
+
+2010-10-08 Kenichi Handa <handa@m17n.org>
+
+ * xfont.c (xfont_open): Fix setting of font->average_width from
+ :avgwidth property (Bug#7123).
+
+2010-10-08 Michael Albinus <michael.albinus@gmx.de>
+
+ * dbusbind.c (syms_of_dbusbind): Use putenv instead of setenv, it
+ is more portable.
+
+ * keyboard.c (gobble_input): Move call of xd_read_queued_messages ...
+ (kbd_buffer_get_event): ... here. This is needed for cygwin, which
+ has not defined SIGIO.
+
2010-10-08 Chong Yidong <cyd@stupidchicken.com>
* xterm.c (x_draw_relief_rect): If box width is larger than 1,
diff --git a/src/buffer.c b/src/buffer.c
index 3f087d62a5..ed3b7acd2a 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.
Buffer changes made while executing the `before-change-functions'
don't call any before-change or after-change functions.
-That's because these variables are temporarily set to nil.
-As a result, a hook function cannot straightforwardly alter the
-value of these variables. See the Emacs Lisp manual for a way of
-accomplishing an equivalent result by using other variables.
+That's because `inhibit-modification-hooks' is temporarily set non-nil.
If an unhandled error happens in running these functions,
the 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.)
Buffer changes made while executing the `after-change-functions'
don't call any before-change or after-change functions.
-That's because these variables are temporarily set to nil.
-As a result, a hook function cannot straightforwardly alter the
-value of these variables. See the Emacs Lisp manual for a way of
-accomplishing an equivalent result by using other variables.
+That's because `inhibit-modification-hooks' is temporarily set non-nil.
If an unhandled error happens in running these functions,
the variable's value remains nil. That prevents the error
diff --git a/src/callproc.c b/src/callproc.c
index 29e13bbc4a..ee0872b556 100644
--- a/src/callproc.c
+++ b/src/callproc.c
@@ -254,21 +254,16 @@ usage: (call-process PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS) */)
if (!NILP (Vcoding_system_for_write))
val = Vcoding_system_for_write;
else if (! must_encode)
- val = Qnil;
+ val = Qraw_text;
else
{
args2 = (Lisp_Object *) alloca ((nargs + 1) * sizeof *args2);
args2[0] = Qcall_process;
for (i = 0; i < nargs; i++) args2[i + 1] = args[i];
coding_systems = Ffind_operation_coding_system (nargs + 1, args2);
- if (CONSP (coding_systems))
- val = XCDR (coding_systems);
- else if (CONSP (Vdefault_process_coding_system))
- val = XCDR (Vdefault_process_coding_system);
- else
- val = Qnil;
+ val = CONSP (coding_systems) ? XCDR (coding_systems) : Qnil;
}
- val = coding_inherit_eol_type (val, Qnil);
+ val = complement_process_encoding_system (val);
setup_coding_system (Fcheck_coding_system (val), &argument_coding);
coding_attrs = CODING_ID_ATTRS (argument_coding.id);
if (NILP (CODING_ATTR_ASCII_COMPAT (coding_attrs)))
@@ -912,20 +907,16 @@ usage: (call-process-region START END PROGRAM &optional DELETE BUFFER DISPLAY &r
if (!NILP (Vcoding_system_for_write))
val = Vcoding_system_for_write;
else if (NILP (current_buffer->enable_multibyte_characters))
- val = Qnil;
+ val = Qraw_text;
else
{
args2 = (Lisp_Object *) alloca ((nargs + 1) * sizeof *args2);
args2[0] = Qcall_process_region;
for (i = 0; i < nargs; i++) args2[i + 1] = args[i];
coding_systems = Ffind_operation_coding_system (nargs + 1, args2);
- if (CONSP (coding_systems))
- val = XCDR (coding_systems);
- else if (CONSP (Vdefault_process_coding_system))
- val = XCDR (Vdefault_process_coding_system);
- else
- val = Qnil;
+ val = CONSP (coding_systems) ? XCDR (coding_systems) : Qnil;
}
+ val = complement_process_encoding_system (val);
{
int count1 = SPECPDL_INDEX ();
diff --git a/src/coding.c b/src/coding.c
index d6285ed924..2cf3236009 100644
--- a/src/coding.c
+++ b/src/coding.c
@@ -6016,10 +6016,9 @@ raw_text_coding_system (Lisp_Object coding_system)
}
-/* If CODING_SYSTEM doesn't specify end-of-line format but PARENT
- does, return one of the subsidiary that has the same eol-spec as
- PARENT. Otherwise, return CODING_SYSTEM. If PARENT is nil,
- inherit end-of-line format from the system's setting
+/* If CODING_SYSTEM doesn't specify end-of-line format, return one of
+ the subsidiary that has the same eol-spec as PARENT (if it is not
+ nil and specifies end-of-line format) or the system's setting
(system_eol_type). */
Lisp_Object
@@ -6041,6 +6040,8 @@ coding_inherit_eol_type (Lisp_Object coding_system, Lisp_Object parent)
parent_spec = CODING_SYSTEM_SPEC (parent);
parent_eol_type = AREF (parent_spec, 2);
+ if (VECTORP (parent_eol_type))
+ parent_eol_type = system_eol_type;
}
else
parent_eol_type = system_eol_type;
@@ -6054,6 +6055,45 @@ coding_inherit_eol_type (Lisp_Object coding_system, Lisp_Object parent)
return coding_system;
}
+
+/* Check if text-conversion and eol-conversion of CODING_SYSTEM are
+ decided for writing to a process. If not, complement them, and
+ return a new coding system. */
+
+Lisp_Object
+complement_process_encoding_system (Lisp_Object coding_system)
+{
+ Lisp_Object coding_base = Qnil, eol_base = Qnil;
+ Lisp_Object spec, attrs;
+ int i;
+
+ for (i = 0; i < 3; i++)
+ {
+ if (i == 1)
+ coding_system = CDR_SAFE (Vdefault_process_coding_system);
+ else if (i == 2)
+ coding_system = preferred_coding_system ();
+ spec = CODING_SYSTEM_SPEC (coding_system);
+ if (NILP (spec))
+ continue;
+ attrs = AREF (spec, 0);
+ if (NILP (coding_base) && ! EQ (CODING_ATTR_TYPE (attrs), Qundecided))
+ coding_base = CODING_ATTR_BASE_NAME (attrs);
+ if (NILP (eol_base) && ! VECTORP (AREF (spec, 2)))
+ eol_base = coding_system;
+ if (! NILP (coding_base) && ! NILP (eol_base))
+ break;
+ }
+
+ if (i > 0)
+ /* The original CODING_SYSTEM didn't specify text-conversion or
+ eol-conversion. Be sure that we return a fully complemented
+ coding system. */
+ coding_system = coding_inherit_eol_type (coding_base, eol_base);
+ return coding_system;
+}
+
+
/* Emacs has a mechanism to automatically detect a coding system if it
is one of Emacs' internal format, ISO2022, SJIS, and BIG5. But,
it's impossible to distinguish some coding systems accurately
diff --git a/src/coding.h b/src/coding.h
index 0caa5b2f96..7233726a25 100644
--- a/src/coding.h
+++ b/src/coding.h
@@ -707,6 +707,7 @@ extern Lisp_Object code_convert_string_norecord (Lisp_Object, Lisp_Object,
int);
extern Lisp_Object raw_text_coding_system (Lisp_Object);
extern Lisp_Object coding_inherit_eol_type (Lisp_Object, Lisp_Object);
+extern Lisp_Object complement_process_encoding_system (Lisp_Object);
extern int decode_coding_gap (struct coding_system *,
EMACS_INT, EMACS_INT);
diff --git a/src/dbusbind.c b/src/dbusbind.c
index 99a157fbc7..683b7cb583 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,
/* Add bus to list of registered buses. */
Vdbus_registered_buses = Fcons (bus, Vdbus_registered_buses);
+ /* We do not want to abort. */
+ putenv ("DBUS_FATAL_WARNINGS=0");
+
/* Return. */
return Qnil;
}
@@ -2160,12 +2163,11 @@ be called when the D-Bus reply message arrives. */);
doc: /* If non-nil, debug messages of D-Bus bindings are raised. */);
#ifdef DBUS_DEBUG
Vdbus_debug = Qt;
- /* We can also set environment DBUS_VERBOSE=1 in order to see more
- traces. */
+ /* We can also set environment variable DBUS_VERBOSE=1 in order to
+ see more traces. This requires libdbus-1 to be configured with
+ --enable-verbose-mode. */
#else
Vdbus_debug = Qnil;
- /* We do not want to abort. */
- setenv ("DBUS_FATAL_WARNINGS", "0", 1);
#endif
Fprovide (intern_c_string ("dbusbind"), Qnil);
diff --git a/src/keyboard.c b/src/keyboard.c
index 9af26cd427..b284244ac8 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -3952,6 +3952,11 @@ kbd_buffer_get_event (KBOARD **kbp,
/* One way or another, wait until input is available; then, if
interrupt handlers have not read it, read it now. */
+#ifdef HAVE_DBUS
+ /* Read D-Bus messages. */
+ xd_read_queued_messages ();
+#endif /* HAVE_DBUS */
+
/* Note SIGIO has been undef'd if FIONREAD is missing. */
#ifdef SIGIO
gobble_input (0);
diff --git a/src/process.c b/src/process.c
index 370fb673e8..e151506595 100644
--- a/src/process.c
+++ b/src/process.c
@@ -1670,6 +1670,11 @@ usage: (start-process NAME BUFFER PROGRAM &rest PROGRAM-ARGS) */)
val = XCDR (Vdefault_process_coding_system);
}
XPROCESS (proc)->encode_coding_system = val;
+ /* Note: At this momemnt, the above coding system may leave
+ text-conversion or eol-conversion unspecified. They will be
+ decided after we read output from the process and decode it by
+ some coding system, or just before we actually send a text to
+ the process. */
}
@@ -1712,6 +1717,7 @@ usage: (start-process NAME BUFFER PROGRAM &rest PROGRAM-ARGS) */)
tem = Fsubstring (tem, make_number (2), Qnil);
{
+ Lisp_Object arg_encoding = Qnil;
struct gcpro gcpro1;
GCPRO1 (tem);
@@ -1729,9 +1735,14 @@ usage: (start-process NAME BUFFER PROGRAM &rest PROGRAM-ARGS) */)
tem = Fcons (args[i], tem);
CHECK_STRING (XCAR (tem));
if (STRING_MULTIBYTE (XCAR (tem)))
- XSETCAR (tem,
- code_convert_string_norecord
- (XCAR (tem), XPROCESS (proc)->encode_coding_system, 1));
+ {
+ if (NILP (arg_encoding))
+ arg_encoding = (complement_process_encoding_system
+ (XPROCESS (proc)->encode_coding_system));
+ XSETCAR (tem,
+ code_convert_string_norecord
+ (XCAR (tem), arg_encoding, 1));
+ }
}
UNGCPRO;
@@ -5529,12 +5540,21 @@ send_process (volatile Lisp_Object proc, const unsigned char *volatile buf,
&& !NILP (XBUFFER (object)->enable_multibyte_characters))
|| EQ (object, Qt))
{
+ p->encode_coding_system
+ = complement_process_encoding_system (p->encode_coding_system);
if (!EQ (Vlast_coding_system_used, p->encode_coding_system))
- /* The coding system for encoding was changed to raw-text
- because we sent a unibyte text previously. Now we are
- sending a multibyte text, thus we must encode it by the
- original coding system specified for the current process. */
- setup_coding_system (p->encode_coding_system, coding);
+ {
+ /* The coding system for encoding was changed to raw-text
+ because we sent a unibyte text previously. Now we are
+ sending a multibyte text, thus we must encode it by the
+ original coding system specified for the current process.
+
+ Another reason we comming here is that the coding system
+ was just complemented and new one was returned by
+ complement_process_encoding_system. */
+ setup_coding_system (p->encode_coding_system, coding);
+ Vlast_coding_system_used = p->encode_coding_system;
+ }
coding->src_multibyte = 1;
}
else
diff --git a/src/xfont.c b/src/xfont.c
index 0a7f4a3c97..d4c6af17c4 100644
--- a/src/xfont.c
+++ b/src/xfont.c
@@ -841,7 +841,7 @@ xfont_open (FRAME_PTR f, Lisp_Object entity, int pixel_size)
val = Ffont_get (font_object, QCavgwidth);
if (INTEGERP (val))
- font->average_width = XINT (val);
+ font->average_width = XINT (val) / 10;
if (font->average_width < 0)
font->average_width = - font->average_width;
if (font->average_width == 0