]> code.delx.au - gnu-emacs/commitdiff
Merge changes from emacs-23 branch.
authorJuanma Barranquero <lekktu@gmail.com>
Fri, 8 Oct 2010 10:14:47 +0000 (12:14 +0200)
committerJuanma Barranquero <lekktu@gmail.com>
Fri, 8 Oct 2010 10:14:47 +0000 (12:14 +0200)
34 files changed:
doc/lispref/ChangeLog
doc/misc/ChangeLog
doc/misc/cl.texi
doc/misc/eudc.texi
lib-src/ChangeLog
lib-src/emacsclient.c
lisp/ChangeLog
lisp/cedet/ChangeLog
lisp/cedet/semantic/bovine/c-by.el
lisp/cedet/semantic/bovine/el.el
lisp/cedet/semantic/db-typecache.el
lisp/cedet/semantic/fw.el
lisp/cedet/semantic/grammar.el
lisp/cedet/semantic/imenu.el
lisp/cedet/semantic/lex-spp.el
lisp/cedet/semantic/mru-bookmark.el
lisp/cedet/semantic/tag.el
lisp/dired.el
lisp/dnd.el
lisp/emacs-lisp/shadow.el
lisp/minibuffer.el
lisp/obsolete/cl-compat.el [moved from lisp/emacs-lisp/cl-compat.el with 97% similarity]
lisp/obsolete/lmenu.el [moved from lisp/emacs-lisp/lmenu.el with 99% similarity]
lisp/server.el
lisp/vc/vc-svn.el
src/ChangeLog
src/buffer.c
src/callproc.c
src/coding.c
src/coding.h
src/dbusbind.c
src/keyboard.c
src/process.c
src/xfont.c

index 102866b0a82453861176f2e3a172c1ad35a0bbb9..8b93b2fb125d973fc50e5ce7de4b7fe2c85653f0 100644 (file)
 
        * 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
index 2971701b1f29829bca9c6fb4d0ea3722b020d94e..b06cfe1394b798ae8054b2c6b1ff927209a7d6f4 100644 (file)
@@ -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.
index de57ff7d095597a7a57cd397f5bdfd4a118f47a1..79038792a3e83cca30fc5fc60ab94e85726016cc 100644 (file)
@@ -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
index 48606e0d664a7914b581a32f8358fbb04960dceb..b62c0ed75eaaa2cfbf974f4e7ee0717f49fc4d5a 100644 (file)
@@ -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
index 6d5bf6c4e5b2db6f66f9a3f79a516d3520231328..50528a4508c47bf15b3f1cc9a405d50217fdfb48 100644 (file)
@@ -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):
index b20710e110c6c64d86f59c7b790fc289ca832f68..b60b2661805de7e84e08e4dda7b096a69c4a0c25 100644 (file)
@@ -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",
index 43589198bea155b88abbe4094a7d86f39e8b0746..9dfd7d289fdb217efebec5e3c6fd7e19441ebd3f 100644 (file)
@@ -1,3 +1,49 @@
+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):
index 85f0410541a646883c3191b486412b3d0ffa9672..5617be568dddea8f09c2f586c8623481a713c9e2 100644 (file)
@@ -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):
        (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):
index 09fb42261a47ebc660b2627542cdb8e2960f96bc..c33f3fb67f552da288786c4262ce91b25a4aaf40 100644 (file)
         (nth 7 vals))
        (nth 0 vals)
        (nth 10 vals)
-       (nth 4 vals))
+       (list
+        (nth 4 vals))
+       (nth 9 vals))
       )
      (opt-stars
       opt-class
         (nth 6 vals))
        (nth 0 vals)
        (nth 9 vals)
-       (nth 4 vals))
+       (list
+        (nth 4 vals))
+       (nth 8 vals))
       )
      ) ;; end func-decl
 
       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
 
       )
      ) ;; 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)))
       "\\`[&]\\'")
      ) ;; 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.")
 
index 5b5a5660b7d9f32b29cd53165372902551db566e..ed1f74c590f5496cd0932a7cf555def5b61523a5 100644 (file)
@@ -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)
index 71b15fdf82a5405cc61cd5b48723366feba10f18..59ba83fe9d065cbae0d4d418a7311875cbb4ad8d 100644 (file)
@@ -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)
index 49790861632767501c0db1763a069d240c4c1b66..811508377b8fa819e8e9cbdadfbba22c517538c5 100644 (file)
@@ -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))
index 65365768f980d3c750dc074da844f7233c56dc0a..d99ae0cb0acf13b2f4a57783ce243988d3d29992 100644 (file)
@@ -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)))))))
 
index e38b50bcd574e492e07e39a5a236e62a878c56a4..465a93a16dddfc40d3f6e04f2dd974ef2ac25da2 100644 (file)
@@ -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)))
index 88b77e50e1d33372d9b81f56e28b83576fee4155..0b4fa930b1babd6e5731edf28957914b2d0e19bc 100644 (file)
@@ -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))
index 12e0cb9f834286d0ab8e2da937a67e5b6ac5d932..b723a848c10893ef6c1268ffea92b3ec7566728a 100644 (file)
@@ -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'.
index e9094fcb051f2865b0167ed0510aced65c4d02c0..0195a29b66ed3c2eec6fb2880140377b140aa54a 100644 (file)
@@ -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)
index 3fdb82ca7d304890d5969e62e8ba335cdc355fd0..f840b60ab075cf827ffb496d8471b0e661d0cdec 100644 (file)
@@ -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
index 7b9d0c0786cd763ae33cb85eb19f5af38caf629e..cbbef3844367d63b2d768f973b789592d89ef58b 100644 (file)
@@ -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.
index ee59cca2d6fe7b965f04fc9e12d55e1ff06ff9c6..850c1e89682333b8fd69ffc0690b25b308efc56c 100644 (file)
 \f
 (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))
index f7dc035a8866d79be908f6afe2508dd9cd7cca65..98380f3926e13e4e541dba701a881c7e6b3453bb 100644 (file)
@@ -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))
similarity index 97%
rename from lisp/emacs-lisp/cl-compat.el
rename to lisp/obsolete/cl-compat.el
index f4923b6f8c6fea9996a6be0731c6b72ddef39b2c..622c4eaace61d129c7e8a68410c82a9416ebf0d3 100644 (file)
@@ -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.
 ;; byte-compile-warnings: (not cl-functions)
 ;; End:
 
-;; arch-tag: 9996bb4f-aaf5-4592-b436-bf64759a3163
 ;;; cl-compat.el ends here
similarity index 99%
rename from lisp/emacs-lisp/lmenu.el
rename to lisp/obsolete/lmenu.el
index 54fb488ed59cf2b778e4aa24b96fd9a9be12b300..14f6398eef151f0f72fd0068ddc750956d443af7 100644 (file)
@@ -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:
 
 \f
@@ -439,5 +442,4 @@ BEFORE, if provided, is the name of a menu before which this menu should
 \f
 (provide 'lmenu)
 
-;; arch-tag: 7051c396-2837-435a-ae11-b2d2e2af8fc1
 ;;; lmenu.el ends here
index e661f055e1a971852950af8f0a30ff855dd9ad2b..bc49087f464f9fcdb4bd73b8f2103704d7251816 100644 (file)
@@ -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.
index 7718c4e531619db744794e1bb339a27a808da0c1..3e4c299f096b791405355c79f7854070d17f081b 100644 (file)
@@ -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*")
index 2effe2ea84cbc004c05c76e032cb21f51679a6dc..0bde3bb19fe199c3d830fd833a2f6aac7589001e 100644 (file)
@@ -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,
index 3f087d62a5f388053347a3e0241fb6caac30ea63..ed3b7acd2ac3a69253330821ad96361429d46a81 100644 (file)
@@ -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
index 29e13bbc4a776c8b6ef3ada2b242b9b1738377f5..ee0872b556226f3e75877a7429dd488119e6c4d8 100644 (file)
@@ -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 ();
index d6285ed9245c2e93865c6c926af4c7d3254d7a14..2cf32360096ddb0531666d2c8f1c70a0d18b9ca2 100644 (file)
@@ -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
index 0caa5b2f96f0a96c263dc9769755c67681cdfdef..7233726a2509bfce9ad24c8aa0ccd96c5ad0bd99 100644 (file)
@@ -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);
index 99a157fbc76339251febb522768399ede9d19177..683b7cb583b6889cacd446bfccf8a5c690530af1 100644 (file)
@@ -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);
index 9af26cd427dd311224bce9b1799064042ea4a051..b284244ac81fc523a71d130583942ec2f0e19b4a 100644 (file)
@@ -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);
index 370fb673e840c936793b3ddc325a3db9b3627475..e1515065957c9f3627eaf59e0e22fd9fb8f5c15b 100644 (file)
@@ -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
index 0a7f4a3c97f900b9f26ff1a9e8131e0ae4d90455..d4c6af17c4989689ab9cac7cae71608a8812b318 100644 (file)
@@ -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